ONLYOFFICEマクロを使って番号リストから表を作成する方法

2025年02月12日著者:Denis

文書を扱う際、番号付きリストをテーブルに変換して可読性を高めたい場面がよくありますが、手作業で行うのは手間がかかります。そこで、ONLYOFFICEマクロを使えば、こうした作業を自動化して大幅に効率化できます。今回のブログ記事では、番号付きリストをテーブルに簡単に変換するONLYOFFICEマクロの作り方をステップごとに解説します。

How to to create a table from the numbered list using ONLYOFFICE macros

マクロの構築

ドキュメントと番号付き段落の取得

このマクロは、まずアクティブなドキュメントにアクセスし、番号付きの段落をすべて収集します:

const oDocument = Api.GetDocument();
const paragraphs = oDocument.GetAllNumberedParagraphs();
  • Api.GetDocument() は現在開いているドキュメントを取得します。
  • oDocument.GetAllNumberedParagraphs() は番号付きスタイルを使っているすべての段落をまとめて集めます。

番号付き要素をテーブルの行として整理

次にスクリプトは、各番号付き段落を走査し、テーブルの行に変換します:

let tableData = [];
let currentRow = [];

for (let i = 0; i < paragraphs.length; i++) { let level = paragraphs[i].GetNumbering().GetLevelIndex(); let text = paragraphs[i].GetText().trim(); if (level === 0) { if (currentRow.length > 0) {
            tableData.push(currentRow);
        }
        currentRow = [text];
    } else if (level === 1 && currentRow.length > 0) {
        currentRow.push(text);
    }
}

if (currentRow.length > 0) {
    tableData.push(currentRow);
}
  • 番号付き段落をループし、それぞれの段落がどの番号レベルかを確認します。
  • レベル0の段落は新しい行を開始し、レベル1の段落は同じ行の列として追加されます。
  • 最終的に全段落が tableData に行として格納されます。

テーブル次元の判定

テーブルを作成する前に、必要な列数を割り出します。tableDataのうち最長の行の列数をmaxColumnsとして取得し、すべての項目が正しく収まるようにします:

let maxColumns = 0;
for (let j = 0; j < tableData.length; j++) { if (tableData[j].length > maxColumns) {
        maxColumns = tableData[j].length;
    }
}

テーブルを作成し、内容を埋め込む

ここで整理したデータを用いてテーブルを作成し、テキストを挿入します:

let table = Api.CreateTable(maxColumns, tableData.length);
oDocument.Push(table);

for (let row = 0; row < tableData.length; row++) {
    for (let col = 0; col < tableData[row].length; col++) {
        table
            .GetCell(row, col)
            .GetContent()
            .GetElement(0)
            .AddText(tableData[row][col]);
    }
}
  • Api.CreateTable(maxColumns, tableData.length) で必要な行列数のテーブルを生成。
  • tableDataをループし、対応するテキストをそれぞれのセルに挿入します。

エラーハンドリング

スムーズに処理を行うために、try...catchブロックを用いてエラーをキャッチし、コンソールにログを出力します。万一エラーが起きてもコンソールに内容が表示され、原因特定が容易になります:

try {
    // Code execution
} catch (error) {
    console.log("Error: " + error.message);
}

これでマクロの作成は完了。実際にマクロを実行してみましょう!

このマクロを使えば定型作業が大幅に簡略化され、作業効率が向上します。ONLYOFFICEマクロは、多くのAPIメソッドを提供しており、ワークフローの自動化や生産性向上に役立ちます。カスタムマクロを開発して、日々のタスクをさらにスマートにこなしてみてください。アイデアや提案があればお気軽にご連絡ください。お待ちしています!

ONLYOFFICEの無料アカウントを登録する

オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業