GAS連携でフォーム回答を集計
GAS連携とフォーム回答の基本
Google Apps Script(GAS)を使ってGoogle フォームと連携することで、フォーム回答を自動で取得・処理できます。まずはフォームを作成し、スクリプトエディタを開きます。スクリプト内で FormApp.openById('フォームID') を呼び出すと、対象フォームのオブジェクトが取得できます。これにより、フォーム回答を取得する準備が整います。
GAS連携のメリットは、回答が送信されるたびに自動で処理を実行できる点です。例えば、回答をスプレッドシートに転記したり、メール通知を送るなど、業務フローを効率化できます。
getResponsesで回答取得と詳細取得
フォーム回答を取得する際は、getResponses() メソッドを使用します。以下のように書くと、全回答を配列で取得できます。
var form = FormApp.openById('フォームID');
var responses = form.getResponses();
取得した responses は FormResponse オブジェクトの配列です。各回答の詳細を取得するには、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)、送信時トリガーでの自動処理、そして集計や連携まで一連のフローをスクリプトで完結できます。これにより、手作業でのデータ入力や集計作業を大幅に削減できます。
コメント
コメントを投稿