Google フォーム の選択肢を自動で追加する方法
はじめに
Google フォームは、アンケートやフィードバック収集に非常に便利なツールですが、選択肢を手動で追加する際に、同じ名称の項目が異なるスペースや漢字の違いで重複してしまうことがあります。
このような場合、データを収集する際に修正作業が発生し、時間を要してしまいます。そこで、私はラジオボタンで「その他」の選択肢を自動で追加する方法を考案しました。
この方法を使うことで、選択肢の管理が容易になり、結果的に作業時間を大幅に短縮できると考えています。
動画が見たい。
動画での閲覧が可能な方は以下のリンクから閲覧できます。
仕事中で動画は見れない!という方は以下に方法を記載していますので、このまま閲覧ください。
ステップ1: Google フォーム を用意する。
今回動画で説明している Google フォーム は以下のURLからコピーできます。
https://docs.google.com/forms/d/1xeS2_03qFoXK9vQfBG4Xaag7ueP7UYdgGITReJDIaw0/copy
以下の画像のように選択肢を作成します。
最初に質問を追加する場合は、以下の画像に記載の通りに「その他を追加」を押してください。
※あらかじめ選択肢を用意する必要がありますが、最初にプレビューから送信しておいてください。
ステップ2:回答先の Google スプレッドシート を作成
Google フォーム の回答のボタンからスプレッドシートを作成します。
すでに作成している Google スプレッドシート でも構いません。
ステップ3: Google スプレッドシート のシート名を任意のものに修正する。
今回はシート名を「病院リスト」にしています。
ステップ4: Google スプレッドシート の拡張機能 → Apps script をクリックします。
中身を全部消して以下のコードをコピーして貼り付けます。
function updateHospitalList() {
// スプレッドシートと「病院リスト」のシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名");
// Googleフォームと質問項目を取得
var form = FormApp.openById('フォームID'); // GoogleフォームのIDを指定
var formItems = form.getItems(FormApp.ItemType.MULTIPLE_CHOICE);
// 病院名を更新する対象の質問項目を特定
var hospitalQuestion = formItems[0].asMultipleChoiceItem(); // 病院名選択の質問項目
// スプレッドシートから既存の病院名を取得(C列が病院名のリスト)
var hospitalNames = sheet.getRange(2, 3, sheet.getLastRow() - 1).getValues().flat();
// 質問項目の選択肢を更新
hospitalQuestion.setChoiceValues(hospitalNames);
}
ステップ5:コードの内容を修正する。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名");
上記部分の"シート名"を先ほど Google スプレッドシート で確認したシート名を入力します。
var form = FormApp.openById('フォームID'); // GoogleフォームのIDを指定
'フォームID'については、自身で作成した Google フォーム のURL内にあります。IDは以下の例の通りです。
https://docs.google.com/forms/d/xxxxxxxxxxxxxxxxxxxxxxxxxxx/edit#responses
上記URLのようなxの部分がIDになります。ここをコピーしてコードに貼り付けます。
ステップ6:トリガーを設定する。
以下の画像のように⏰のようなマークをクリックします。
そうすると、右下に「トリガーを追加」というボタンがありますので、クリックすると以下内容が表示されます。
この保存を行うことで、自動的に選択肢を増やすことができます。
// スプレッドシートから既存の病院名を取得(C列が病院名のリスト)
var hospitalNames = sheet.getRange(2, 3, sheet.getLastRow() - 1).getValues().flat();
2,3については2行目で3列目(C列)を参照しているという意味になります。
設問の回答先のカラムによって修正してください。
こんな感じで、作成してみました。
拙い記事ではありますが、閲覧いただきありがとうございました。