GAS(Google Apps Script)で、Googleフォームの特定箇所のプルダウンフィールドの選択肢をスプレッドシートで管理するためのスクリプトです。スプレッドシートで値を変更したら、自動でGoogleフォームのプルダウンフィールドの選択肢が更新されます。
管理シートの更新を自動で察知かつ無駄に更新処理が発動されないよう、行数を管理する処理も追加しています。また、changeFormXX関数を複数作成すれば、もちろん同時に複数のGoogleフォームに対する処理も可能です。
ご自由にお使いください!
※ご質問にはお答えできませんので予めご承知おきくださいませ。
スクリプト実行イメージ
[更新前]


[更新中]
※管理シートで値を手動で追加

[更新後]


コード
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("選択肢にする値を記入しているシート名");
const lastRow = sheet.getLastRow();
function updateGformStaffChoices() {
// シート内の対象値の数(=行数)が変化したら自動でスクリプトが発動するように、常に行数を管理しておく
const count = sheet.getRange("C1").getValue();
if (count !== (lastRow - 1)) {
sheet.getRange("C1").setValue(lastRow - 1);
changeForm01();
}
}
function changeForm01() {
const form = FormApp.openById("対象のGoogleフォームID");
const items = form.getItems();
let targetField01 = null;
// 各アイテムをループして、質問タイトルが一致するアイテムを検出
for (let i = 0; i < items.length; i++) {
if (items[i].getTitle() === "担当者") {
targetField01 = items[i];
}
}
createItem(targetField01);
}
function createItem(item) {
const dataList = sheet.getRange(2,1,lastRow).getValues();
const dataListF = [...new Set(dataList.flat().filter(data => data.trim() !== ''))];
// プルダウンメニューの選択肢に設定
item.asListItem().setChoiceValues(dataListF);
}
トリガー設定
トリガーは「スプレッドシートから」「変更時」で設定してください。