LANG SELRCT

コードを書く場所

2019年9月14日土曜日

Google Formの質問項目をスプレッドシートから読み込みたい


このようにA列に値を入力したシートがあって


A列の2行目以降の値をフォームの特定の質問の選択肢に入れたい



事前準備


以下のコード.gsで設定する箇所

  • itemId:項目を入れたいフォームの質問のID
  • ss_url:A列に項目用の値が入っているスプレッドシートのURL


コード.gs
var itemId = フォームの質問のID;
var ss_url = "https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0";

function setChoicesFromSheet() {  
  var sheet = returnSheet(ss_url);
  var values = getValuesFromSheet(sheet);
  setChoiceValues(itemId, values);
}

function returnSheet(ss_url) {
  var ss = SpreadsheetApp.openByUrl(ss_url);
  var sh_id = ss_url.split("gid=")[1];
  var shs = ss.getSheets();
  for (var i = 0; i < shs.length; i++) {
    if (shs[i].getSheetId() == sh_id) {
      break;
    }
  }
  var sheet = ss.getSheets()[i];
  return sheet;
}

function getValuesFromSheet(sheet) {
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange(2, 1, lastRow-1, 1);
  var values = range.getValues();
  var choices = [];
  for(var i = 0; i < values.length; i++) {
    choices.push(values[i][0]);
  }
  return choices;
}

function setChoiceValues(itemId, values) {
  var form = FormApp.getActiveForm();
  var item = form.getItemById(itemId);
  var choices = item.asMultipleChoiceItem().setChoiceValues(values);
}


itemId と ss_url を設定して
setChoicesFromSheet()
を実行すると
フォームの質問の選択肢がシートの値に書き換えられます


関連記事

Google Formの質問項目を取得する
Google Formで質問の選択肢の値を取得したい
Google Formの質問の選択肢をコードで書き換えたい