Googleフォームのプルダウンリストに反映させたい情報が多い場合や、頻繁に情報が入れ替わる場合など、Googleフォーム上でリストを管理するのが不便な場合があると思います。
その場合に、リストの管理はスプレッドシート上で行い、フォームへの反映はGoogle Apps Scriptで行うと便利です。
そこで今回は、スプレッドシート上の表から、Googleフォームのプルダウンリストにデータを反映させる方法をご紹介します。
スプレッドシート上の表から、Googleフォームのプルダウンリストにデータを反映させる
下記のサンプル1を元にご紹介していきます。
・サンプル1
function getList() { var ss = SpreadsheetApp.openById(“[ここにスプレッドシートIDを記載]”); item.asListItem().setChoiceValues(list); } |
まず、下記のようにスプレッドシートとGoogleフォームを作成します。
それでは、さきほどのサンプル1についてですが、変数ssにはスプレッドシートID、変数shにはシート名を代入し、変数last_rowには、
sh.getLastRow()
で取得したシートの最終行を代入します。
var list = sh.getRange(2,1,last_row – 1,1).getValues();
では「リスト」シートのA列2行目~最終行(スクリプト上ではカラム行を除くため、last_row – 1となっています)の値を取得し、変数listに格納します。
変数formidにはGoogleフォームのIDを代入します。
フォームIDはGoogleフォーム編集画面URLの下記から取得する事ができます。
https://docs.google.com/forms/d/[ここにフォームIDが記載されています]/edit
そして、
var form = FormApp.openById(formid);
でフォームの情報を取得し、
var items = form.getItems();
でフォーム上のアイテム一覧(質問一覧)を取得し、
var item = items[1];
で更新したいプルダウンの場所を指定します。
itemsは0から始まり、今回更新したいプルダウンはフォーム上の2番目にあるため、items[1]を指定しています。
最後に、
item.asListItem().setChoiceValues(list);
を実行すると、Googleフォーム上のプルダウンリストに反映されます。
スクリプトの実行時に「承認が必要です」という画面が表示された場合はこちらの記事をご参照いただき、承認を進めてください。