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);
}

トリガー設定

トリガーは「スプレッドシートから」「変更時」で設定してください。