ADVERTISEMENT

【Googleドキュメント】Apps ScriptでGoogleフォームの回答をDocsに集約!レポート自動化

【Googleドキュメント】Apps ScriptでGoogleフォームの回答をDocsに集約!レポート自動化
🛡️ 超解決

Googleフォームで集めた回答を毎回手動でコピーしてGoogleドキュメントに貼り付けていませんか。この作業は時間がかかり、ミスも発生しやすいものです。そこで役立つのが、Apps Scriptを使った自動化です。本記事では、フォームの回答を自動的にドキュメントに集約し、レポートを自動作成する方法をステップごとに解説します。設定は一度行えば、その後はフォームが送信されるたびに自動で更新されます。

【要点】Apps Scriptでフォーム回答をドキュメントに自動集約

  • スクリプトエディタを開く: GoogleフォームからApps Scriptエディタを起動し、コードを記述します。
  • フォーム回答の取得: FormAppクラスを使って回答データを取得します。
  • ドキュメントへの書き込み: DocumentAppクラスでドキュメントを開き、回答を追記します。

ADVERTISEMENT

Apps Scriptによる自動化の仕組み

Apps ScriptはGoogleが提供するJavaScriptベースのスクリプトプラットフォームです。これを使うと、Googleフォーム、ドキュメント、スプレッドシートなどのサービスを連携させて自動化できます。具体的には、フォームに新しい回答が送信されたら、その内容を取得し、ドキュメントの特定の位置に挿入することが可能です。この仕組みを利用することで、手作業のコピー&ペーストが不要になります。

スクリプトはフォームに直接組み込むことも、スタンドアロンスクリプトとして作成することもできます。ここではフォームに紐づける方法を紹介します。この方法では、フォームの送信イベントをトリガーとしてスクリプトが自動実行されます。

なお、Apps Scriptを初めて使う場合、権限の承認が必要です。スクリプトがフォームの回答データやドキュメントを読み書きするために、適切な権限を許可する必要があります。権限は一度承認すれば、後は自動で適用されます。

フォーム回答をドキュメントに自動集約する手順

以下の手順に沿って設定を進めてください。事前にGoogleフォームと集約先のGoogleドキュメントを用意しておきます。

手順1: フォームとドキュメントを準備する

  1. フォームを作成する
    Googleドライブで「新規」→「Googleフォーム」を選択し、必要な質問項目を設定します。質問は複数でも1つでも構いません。
  2. 集約先のドキュメントを作成する
    同様に「新規」→「Googleドキュメント」を選択し、ドキュメントを作成します。タイトルは「フォーム回答レポート」などわかりやすい名前にしましょう。このドキュメントのIDを後で使用します。

手順2: スクリプトエディタを開く

  1. フォームの編集画面を開く
    先ほど作成したフォームを開き、右上の「送信」ボタンの横にある「⋮」アイコンをクリックします。
  2. スクリプトエディタを起動する
    メニューから「スクリプトエディタ」を選択します。新しいタブでApps Scriptプロジェクトが開きます。ここでコードを記述します。

手順3: コードを記述する

  1. 関数を定義する
    デフォルトのコードを削除し、以下の関数を記述します。この関数はフォーム送信時に自動実行されます。関数名は任意ですが、トリガー設定で指定するため覚えやすい名前にします。
  2. コードを記述する
    以下がサンプルコードです。コピーして貼り付けてください。
    function onFormSubmit(e) {
    var formResponses = e.response;
    var itemResponses = formResponses.getItemResponses();
    var doc = DocumentApp.openById('YOUR_DOCUMENT_ID');
    var body = doc.getBody();
    body.appendParagraph('新しい回答が届きました');
    for (var i = 0; i < itemResponses.length; i++) {
    var question = itemResponses[i].getItem().getTitle();
    var answer = itemResponses[i].getResponse();
    body.appendParagraph(question + ': ' + answer);
    }
    body.appendParagraph('---');
    }

    ただし、’YOUR_DOCUMENT_ID’の部分は、実際のドキュメントのIDに置き換えてください。ドキュメントIDはドキュメントのURLの/d/の後の文字列です。例: https://docs.google.com/document/d/ABC123def456/edit の「ABC123def456」の部分です。

コードの詳細解説

上記のコードの動作を説明します。まず、onFormSubmit関数は引数eを受け取ります。このeにはフォーム送信時のイベント情報が含まれます。e.responseで回答データを取得し、getItemResponses()で各質問の回答を配列として取得します。

次に、DocumentApp.openById()で指定したドキュメントを開きます。IDは事前にコピーしておきます。getBody()でドキュメントの本文を取得し、appendParagraph()で段落を追加します。ループで各質問と回答を順に追加し、最後に区切り線を入れて見やすくしています。

手順4: トリガーを設定する

  1. トリガー設定画面を開く
    スクリプトエディタの左メニューから「時計」アイコン(トリガー)をクリックします。
  2. トリガーを追加する
    右下の「トリガーを追加」ボタンをクリックします。
  3. トリガー条件を設定する
    実行する関数として先ほど作成した「onFormSubmit」を選択します。イベントの種類は「フォーム送信時」を選びます。通知設定は「エラー発生時のみ通知」などにすると良いでしょう。
  4. 保存して承認する
    保存をクリックすると、権限承認のダイアログが表示されます。自分のアカウントを選択し、表示される権限を許可してください。承認後、トリガーが有効になります。

手順5: テストと確認

  1. フォームを送信してテストする
    フォームをプレビューして回答を1件送信します。すると、スクリプトが自動実行され、ドキュメントに回答が追記されます。
  2. ドキュメントを確認する
    指定したドキュメントを開き、回答が正しく追加されていることを確認します。段落の順序や内容に問題がなければ成功です。

よくあるトラブルと対処法

トリガーが実行されない

トリガーの設定が正しくない場合があります。イベントの種類が「フォーム送信時」になっているか、関数名がonFormSubmitと一致しているかを確認してください。また、権限承認が完了しているかも重要です。承認が切れている場合は再度承認が必要です。

ドキュメントに書き込まれない

ドキュメントIDが間違っている可能性があります。IDはURLの/d/の後の文字列で、/editより前の部分です。また、ドキュメントが存在するか、スクリプトがアクセス権を持っているかも確認してください。ドキュメントが別のアカウントで作成されている場合は、アクセス権を付与する必要があります。

回答が重複して書き込まれる

トリガーが複数設定されていないか確認しましょう。不要なトリガーは削除してください。また、スクリプトが複数回実行されないように、フラグを設ける方法もありますが、通常はトリガーが1つで十分です。

ADVERTISEMENT

さらに応用するためのアイデア

基本の仕組みを応用すれば、さらなる自動化が可能です。例えば、回答をテーブル形式でドキュメントに挿入したり、特定の質問の回答によって追記する内容を変更する条件分岐を追加できます。また、スプレッドシートを経由してデータを集計してからドキュメントに書き込むこともできます。

トリガーの設定を時間主導型にして、定期的にフォームの回答をまとめてドキュメントに出力する方法もあります。このように、Apps Scriptは柔軟なカスタマイズが可能です。

手動集約と自動集約の比較

項目 手動集約 Apps Script自動集約
作業時間 毎回数分かかる 最初の設定のみ、あとは自動
ミスの発生 コピーミスや漏れが起こりうる プログラムで正確に処理
リアルタイム性 即時に反映できない 送信と同時に追記
応用可能性 そのまま 加工やフォーマット変更が容易
学習コスト 不要 初回のスクリプト学習が必要

まとめ

本記事では、Apps Scriptを使ってGoogleフォームの回答をGoogleドキュメントに自動集約する方法を解説しました。この仕組みを導入すれば、レポート作成の手間を大幅に削減できます。さらに、回答データに応じて条件分岐や書式変更を加えることも可能です。最初の設定に少し時間はかかりますが、その後の効率化は大きいです。ぜひ、実際の業務で活用してみてください。


ADVERTISEMENT

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

超解決 第一編集部

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