はじめに
Googleフォームを利用される際、回答者の管理が難しく感じることはありませんか?
特に大規模なイベントやアンケート、テストなどを実施する場合、回答者は分かっても、未回答者を追跡するのは一苦労です。
今回の記事では、GAS(Google Apps Script)とGoogleフォーム、スプレッドシートの組み合わせを使って、未回答者を自動で一覧化する方法をご紹介します。
- 手動での未回答者のチェック作業が不要となり、時間の節約が可能。
- データの見落しを減少させ、精度の高い回答管理を実現。
- スクリプトの編集が最小限のため、初心者でも管理が容易。
ツール自体は10分~15分ほどで作成可能です。
動作イメージ
まずは簡単に今回のツールの動作について説明します。
サンプルフォームとして、以下のようなフォームを用意します。
回答欄に氏名を記載させる質問を作成しておきます。
また、以下のようなスプレッドシートを用意しておきます。A2セルより下のA列には事前に全回答者の氏名を記載しておきます。
テストフォームが送信されると、自動でGASが「フォームに記載した氏名」と「実施者列の氏名」が一致するか検索を行い、一致する氏名の隣のセルに完了マークとして「✓」を入力します。
同時にD列には未実施者の一覧が記載されます。
作成方法
今回の自動化処理の作成には以下が必要となります。
- Googleフォーム
- Googleスプレッドシート
- Google Apps Script
- Googleフォーム回答者の名簿
スプレッドシートの新規作成
まず、Google スプレッドシートにアクセスします。
アクセスしたら、[新しいスプレッドシートを作成]> [空白]をクリックして新しいスプレッドシートを作成します。
また、以下はこの後の作業で使用するため、パラメータを控えておいてください。
スプレッドシートの上部アドレスバーより、IDを控えておく。
コピーする場所は下記の「ここの値をコピーして控えておく」の箇所。
https://docs.google.com/spreadsheets/d/ここの値をコピーして控えておく/edit#gid=0
合わせて、下記画像のような表を作成します。1列目にそれぞれ任意のヘッダーをつけ、A2セルより下のA列に回答者全員の氏名を記載しておきます。
Googleフォームの操作
Googleフォームにアクセスします。
すでに作成してあるフォームを選択するか、新規でフォームを作成したら、質問を作成し質問の中に回答者の氏名を回答させる質問を追加しておきます。
作成が完了したら、フォーム右上「・・・」からスクリプトエディタをクリックします。
GASの設定
スクリプトエディタをクリックすると、GASのウィンドウが起動します。
ここから、GAS上でコードを記載していきます。もともと記載してある以下コードは削除します。
function myFunction() {
}
削除したら、以下コードをコピーしてそのまま貼り付けてくだい。
このとき、3行目の’ ‘で囲われた部分を以下のように書き換えてください。
YOUR_SPREADSHEET_ID:前項で控えておいたスプレッドシートのID
function onFormSubmit(e) {
// スプレッドシートIDを指定
var SPREADSHEET_ID = 'YOUR_SPREADSHEET_ID'; // この文字列を実際のIDに置き換えてください
// スプレッドシートを開く
var ss = SpreadsheetApp.openById(SPREADSHEET_ID);
var sheet = ss.getActiveSheet();
// フォームの回答を取得
var formResponse = e.response;
var itemResponses = formResponse.getItemResponses();
var firstAnswer = itemResponses[0].getResponse();
// A2セルからの名簿リストを取得して一致するセルを検索
var names = sheet.getRange('A2:A' + sheet.getLastRow()).getValues();
var statuses = sheet.getRange('B2:B' + sheet.getLastRow()).getValues();
// 未実施者リストを作成
var uncompleted = [];
for (var i = 0; i < names.length; i++) {
if (names[i][0] == firstAnswer) {
statuses[i][0] = '✓';
}
if (!statuses[i][0] || statuses[i][0] !== '✓') {
uncompleted.push([names[i][0]]);
}
}
// B列にステータスを更新
sheet.getRange('B2:B' + sheet.getLastRow()).setValues(statuses);
// D2セル以下をクリア
sheet.getRange('D2:D' + sheet.getLastRow()).clearContent();
// D列に未実施者を記載
if (uncompleted.length > 0) {
sheet.getRange('D2:D' + (1 + uncompleted.length)).setValues(uncompleted);
}
}
スプレッドシートID等の記入が完了したら、[Ctrl+S]かApps Script 上部バーの[プロジェクトを保存]をクリックして保存します。
トリガーの作成
次に引き金となるアクション(トリガー)を作成します。
GASスクリプトエディタの左部のメニューから「トリガー」(時計のアイコン)をクリックします。
画面下部の「+ トリガーを追加」をクリックします。
実行する関数を[onFormSubmit]に設定し、イベントソースを[フォームから]
に、イベントタイプを[フォーム送信時]
に設定します。
最後に[保存]をクリックします。
最初の関数の実行には権限が必要となるため、[承認が必要です]というモーダルが表示されたら、
[権限を確認]>[表示されているGoogleアカウント(Choose an account)]>[詳細(Advanced)]>[Go to 無題のプロジェクト(unsafe)]>[許可(Allow)]まで移動します。
クリック後トリガーが作成されます。
自動化処理の実行
以上で自動化処理の作成は完了です。あとはGoogleフォームから[送信]で任意の方にフォームを送信し、回答を得ると自動でスプレッドシートにリアルタイムの回答状況が更新されます。
GASおすすめ本
GASをもっと勉強したい!ほかにも自分で何か作成したい!という方には以下がおすすめです。