見出し画像

Google フォーム の選択肢を自動で追加する方法


はじめに

Google フォームは、アンケートやフィードバック収集に非常に便利なツールですが、選択肢を手動で追加する際に、同じ名称の項目が異なるスペースや漢字の違いで重複してしまうことがあります。
このような場合、データを収集する際に修正作業が発生し、時間を要してしまいます。そこで、私はラジオボタンで「その他」の選択肢を自動で追加する方法を考案しました。
この方法を使うことで、選択肢の管理が容易になり、結果的に作業時間を大幅に短縮できると考えています。

動画が見たい。

動画での閲覧が可能な方は以下のリンクから閲覧できます。

仕事中で動画は見れない!という方は以下に方法を記載していますので、このまま閲覧ください。

ステップ1: Google フォーム を用意する。


今回動画で説明している Google フォーム は以下のURLからコピーできます。
https://docs.google.com/forms/d/1xeS2_03qFoXK9vQfBG4Xaag7ueP7UYdgGITReJDIaw0/copy

以下の画像のように選択肢を作成します。

設問形式が「ラジオボタン」になっていることを確認してください。

最初に質問を追加する場合は、以下の画像に記載の通りに「その他を追加」を押してください。

「その他」を追加を選択してください。

※あらかじめ選択肢を用意する必要がありますが、最初にプレビューから送信しておいてください。

ステップ2:回答先の Google スプレッドシート を作成

Google フォーム の回答のボタンからスプレッドシートを作成します。
すでに作成している Google スプレッドシート でも構いません。

画像ではスプレッドシートで表示になっていますが、最初はスプレッドシートにリンクをクリックして新しい Google スプレッドシート を作成してください。

ステップ3: Google スプレッドシート のシート名を任意のものに修正する。

必ず任意のものに修正してください。

今回はシート名を「病院リスト」にしています。

ステップ4: Google スプレッドシート の拡張機能 → Apps script をクリックします。


このような画面が表示されればOKです。

中身を全部消して以下のコードをコピーして貼り付けます。

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列)を参照しているという意味になります。
設問の回答先のカラムによって修正してください。

こんな感じで、作成してみました。

拙い記事ではありますが、閲覧いただきありがとうございました。

いいなと思ったら応援しよう!