ONLYOFFICEマクロを使って番号リストから表を作成する方法
2025年02月12日著者:Denis
文書を扱う際、番号付きリストをテーブルに変換して可読性を高めたい場面がよくありますが、手作業で行うのは手間がかかります。そこで、ONLYOFFICEマクロを使えば、こうした作業を自動化して大幅に効率化できます。今回のブログ記事では、番号付きリストをテーブルに簡単に変換するONLYOFFICEマクロの作り方をステップごとに解説します。
マクロの構築
ドキュメントと番号付き段落の取得
このマクロは、まずアクティブなドキュメントにアクセスし、番号付きの段落をすべて収集します:
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のGitHubページ
ONLYOFFICEの無料アカウントを登録する
オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業