【Google Apps Script(GAS)】Googleフォームのプルダウンリストに、スプレッドシート上からデータ反映させる

オンラインGAS講座 開講中!
オンライン無料体験あり!
最短4週間でGASをマスターできる
Google Apps Scriptコース』開講中!

Googleフォームのプルダウンリストに反映させたい情報が多い場合や、頻繁に情報が入れ替わる場合など、Googleフォーム上でリストを管理するのが不便な場合があると思います。

その場合に、リストの管理はスプレッドシート上で行い、フォームへの反映はGoogle Apps Scriptで行うと便利です。

そこで今回は、スプレッドシート上の表から、Googleフォームのプルダウンリストにデータを反映させる方法をご紹介します。

スプレッドシート上の表から、Googleフォームのプルダウンリストにデータを反映させる

下記のサンプル1を元にご紹介していきます。

・サンプル1

function getList() {

var ss = SpreadsheetApp.openById(“[ここにスプレッドシートIDを記載]”);
var sh = ss.getSheetByName(“リスト”);
var last_row = sh.getLastRow();
var list = sh.getRange(2,1,last_row – 1,1).getValues();
var formid = “[ここにGoogleフォームIDを記載]”;
var form = FormApp.openById(formid);
var items = form.getItems();
var item = items[1];

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フォーム上のプルダウンリストに反映されます。

フォーム編集画面(プルダウン反映後)

フォーム編集画面(プルダウン反映後)

スクリプトの実行時に「承認が必要です」という画面が表示された場合はこちらの記事をご参照いただき、承認を進めてください。

今回は、以前の記事「スクリプトエディタの起動」の続きです。 【Google Apps Script】スクリプトエディタにプログラム...