ADVERTISEMENT

【Googleドキュメント】Apps Scriptで表を動的に生成!データからの自動表化

【Googleドキュメント】Apps Scriptで表を動的に生成!データからの自動表化
🛡️ 超解決

Googleドキュメントで表を手動で作成するのは、データ量が多いほど時間がかかります。特に、毎回同じフォーマットの表を更新する必要がある場合、作業が煩雑になりがちです。そのようなときに役立つのが、Apps Scriptを使った表の自動生成です。Apps Scriptを利用すれば、スプレッドシートやその他のデータソースから情報を読み取り、ドキュメント内に動的に表を挿入できます。この記事では、その具体的な手順を詳しく解説します。

まずは、Apps Scriptで表を生成するための基本的な流れを押さえましょう。以下の要点を確認してから、実際の操作に進んでください。

【要点】Apps Scriptで表を自動生成するための基本ステップ

  • Apps Scriptエディタを開く: Googleドキュメント内から「拡張機能」→「Apps Script」でスクリプトエディタを起動します。
  • 表を挿入する関数を記述: DocumentApp.getActiveDocument().getBody().appendTable(data) のように二次元配列から表を作成します。
  • データソースから二次元配列を取得: スプレッドシートの場合は getDataRange().getValues() で一括取得し、そのまま表に変換できます。

ADVERTISEMENT

Apps Scriptがドキュメントの表を操作する仕組み

Apps ScriptはGoogleの各種サービスをプログラムから操作するためのプラットフォームです。DocumentAppクラスを使うと、ドキュメント内の段落、表、画像などを自由に作成・編集できます。表を扱う場合、二次元配列(配列の配列)を用意し、appendTable()メソッドでドキュメントの末尾に追加します。各行が配列の1要素に対応し、各セルが文字列として扱われます。スプレッドシートのgetDataRange().getValues()も同じ二次元配列を返すため、簡単に連携できます。この仕組みを理解すれば、外部データを組み込んだり、スクリプト内で計算した結果を表にしたりと、応用の幅が広がります。

スプレッドシートのデータをドキュメントに表として挿入する手順

ここでは、スプレッドシートに入力された商品リストを例に、自動で表を生成する手順を紹介します。スクリプトの記述から実行までを順を追って説明します。

ステップ1:スプレッドシートの準備

  1. データを入力する
    表にしたいデータをスプレッドシートに入力します。例えば、1行目に見出し(商品名、価格、在庫数)を入れ、2行目以降に各データを入力します。列数や行数に制限はありませんが、一度に大量のデータを扱うとスクリプトの実行時間が長くなる可能性があります。
  2. スプレッドシートのIDを控える
    URLの「spreadsheets/d/」と「/edit」の間にある英数字の文字列がIDです。これがないとスクリプトからアクセスできません。必ずメモしておいてください。

ステップ2:GoogleドキュメントでApps Scriptを開く

  1. ドキュメントを開く
    表を挿入したいGoogleドキュメントを新規または既存のもので開きます。
  2. スクリプトエディタを起動する
    メニューから「拡張機能」→「Apps Script」をクリックします。新しいタブでApps Scriptプロジェクトが開きます。プロジェクト名を「自動表生成」などに変更しておくと管理しやすくなります。

ステップ3:スクリプトを記述する

  1. 関数を作成する
    デフォルトで用意されている myFunction を以下のコードに置き換えます。
    function generateTable() {
    var doc = DocumentApp.getActiveDocument();
    var body = doc.getBody();
    var sheetId = 'YOUR_SPREADSHEET_ID_HERE'; // 実際のスプレッドシートIDに置き換える
    var sheet = SpreadsheetApp.openById(sheetId).getActiveSheet();
    var data = sheet.getDataRange().getValues();
    var table = body.appendTable(data);
    }
  2. コードを理解する
    まず、DocumentApp.getActiveDocument()で現在のドキュメントを取得します。次にgetBody()で本文部分を取得し、appendTable(data)で二次元配列を表として追加します。スプレッドシートのデータ取得にはSpreadsheetApp.openById(sheetId)でシートを開き、getDataRange().getValues()で全データを二次元配列として取得します。この配列をそのままappendTableに渡すことで、表が生成されます。

ステップ4:スクリプトを保存して実行する

  1. 保存する
    フロッピーディスクのアイコン、またはCtrl+Sで保存します。初回はプロジェクト名の入力が促されます。適当な名前を付けましょう。
  2. 関数を実行する
    関数のドロップダウンから「generateTable」を選択し、再生ボタン(▶)をクリックします。初回実行時には権限の承認画面が表示されます。内容を確認し、「許可」をクリックしてください。
  3. 結果を確認する
    実行が完了すると、ドキュメントの最後にスプレッドシートのデータが表として追加されています。データに変更があった場合は、再度スクリプトを実行すれば表が更新されます(ただし古い表は削除されないため、先に削除する処理を加えると良いでしょう)。

応用:表のスタイルを調整する

生成された表はデフォルトのスタイル(枠線なし、文字サイズ標準)です。見出し行を太字にしたい場合は、以下のように追加のコードを記述します。

  1. 見出し行の書式を設定する
    var headerRow = table.getRow(0);
    headerRow.editAsText().setBold(true);
    headerRow.setBackgroundColor('#f0f0f0');
    のように、最初の行の背景色を変更したり文字を太字にできます。
  2. セルの幅を調整する
    table.setColumnWidth(0, 150); // 1列目の幅を150ポイントに設定 で列幅を指定できます。

表生成でよくあるトラブルと対処法

スプレッドシートが開けないエラー

スクリプト実行時に「スプレッドシートが見つかりません」というエラーが出る場合、スプレッドシートIDが間違っているか、アクセス権限が不足しています。IDを再度確認し、ドキュメントとスプレッドシートが同じGoogleアカウントで開かれていることを確認してください。また、スクリプトにスプレッドシートへのアクセス権限が付与されているかも確認しましょう。

表が正しい位置に挿入されない

appendTableは本文の最後に表を追加します。特定の位置に挿入したい場合は、insertTable(childIndex, data)を使用します。子インデックスは0から始まり、本文内の要素の順番を指定します。例えば、最初の段落の後に挿入するには、body.insertTable(1, data)とします。ただし、インデックスを間違えると意図しない場所に挿入されるため注意が必要です。

大量データでスクリプトがタイムアウトする

一度に1000行以上のデータを追加しようとすると、スクリプトの実行時間制限(30分)に達することがあります。その場合は、データを分割して複数回実行するか、スプレッドシート側でフィルタリングして必要な行だけを取得することをおすすめします。また、SpreadsheetApp.flush()を適宜呼び出すことでメモリを解放することも有効です。

ADVERTISEMENT

まとめ

この記事では、GoogleドキュメントのApps Scriptを使ってスプレッドシートのデータを動的に表として生成する方法を解説しました。appendTablegetValuesの組み合わせを使えば、わずか数行のコードで表の自動生成が可能です。さらに、スタイル調整や挿入位置の制御といった応用も容易に追加できます。次は、スクリプトにトリガーを設定して定期的に表を更新する仕組みに挑戦してみてください。例えば、毎日決まった時間にデータを反映するようにすれば、手間なく最新の表をドキュメントに保てます。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。