スキップしてメイン コンテンツに移動

GAS連携でフォーム回答を集計

GAS連携でフォーム回答を集計

GAS連携とフォーム回答の基本

Google Apps Script(GAS)を使ってGoogle フォームと連携することで、フォーム回答を自動で取得・処理できます。まずはフォームを作成し、スクリプトエディタを開きます。スクリプト内で FormApp.openById('フォームID') を呼び出すと、対象フォームのオブジェクトが取得できます。これにより、フォーム回答を取得する準備が整います。

GAS連携のメリットは、回答が送信されるたびに自動で処理を実行できる点です。例えば、回答をスプレッドシートに転記したり、メール通知を送るなど、業務フローを効率化できます。

getResponsesで回答取得と詳細取得

フォーム回答を取得する際は、getResponses() メソッドを使用します。以下のように書くと、全回答を配列で取得できます。

var form = FormApp.openById('フォームID');
var responses = form.getResponses();

取得した responsesFormResponse オブジェクトの配列です。各回答の詳細を取得するには、getItemResponses() を呼び出します。これにより、質問ごとの回答内容を取得できます。

responses.forEach(function(response) {
  var itemResponses = response.getItemResponses();
  itemResponses.forEach(function(itemResponse) {
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    Logger.log(question + ': ' + answer);
  });
});

上記コードでは、質問タイトルと回答をログに出力しています。実際には、スプレッドシートに書き込む処理や、別サービスへ送信する処理に置き換えることができます。

送信時トリガーで集計と連携

フォーム回答が送信された瞬間に自動で処理を実行したい場合は、送信時トリガー(onFormSubmit)を設定します。スクリプトエディタの「編集」→「現在のプロジェクトのトリガー」から、onFormSubmit を選択し、イベントタイプを「フォーム送信時」に設定します。

トリガーが有効になると、以下のように e オブジェクトを受け取り、回答詳細を取得できます。

function onFormSubmit(e) {
  var itemResponses = e.response.getItemResponses();
  var data = {};
  itemResponses.forEach(function(itemResponse) {
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    data[question] = answer;
  });
  // ここで集計処理や別サービスへの連携を実装
  Logger.log(JSON.stringify(data));
}

集計処理としては、スプレッドシートの特定シートに行を追加し、回答を列に書き込むだけで簡単に集計表を作成できます。また、連携先としては、Slackやメール、外部APIへのPOSTリクエストなど、GASの UrlFetchApp を使って柔軟に実装できます。

まとめると、GAS連携を活用すれば、フォーム回答の取得(getResponses)、回答詳細の取得(getItemResponses)、送信時トリガーでの自動処理、そして集計や連携まで一連のフローをスクリプトで完結できます。これにより、手作業でのデータ入力や集計作業を大幅に削減できます。

この記事はAIによって作成されました。

コメント