如何使用 Google SpreadSheet 中的独特项目作为 Google 表单列表项目的选择?

How to use unique items from Google SpreadSheet as a choice to Google Forms List Item?

我是 Google 脚本的新手,现在我必须制作一个包含选项列表的表单。这些选择应从 Google sheet 中选取。 所以第一个问题是如何从我的价差 sheet 的某个范围内只选择唯一值? 二是如何传递这个列表,使它们成为列表中的项目?

我试过的代码是:

function getMembranesList() {
  var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/......");
  var itemList = ss.getSheetByName('Answers').getRange("Q1:Q").getValues();
  var form = FormApp.getActiveForm();
  var item = form.addListItem()
  item.setTitle('test question');
  item.createChoice(itemList);
}

查看可用于填充 ListItem 的方法,您必须选择一种方法并设置数据,使其与预期输入相匹配。对于我的示例,我选择了 setChoiceValues 方法,它查找一个数组。所以我必须将项目操作成一个数组。

getRange.getValues() 方法没有得到的一件事是列表中返回了多少非空白项。我使用 this quick way 来计算这些项目的数量,因此我的循环有一个最大界限。然后,我形成了 itemArray 并只向其中添加了非空白项。

之后,只需创建 ListItem 并添加值即可:

function getMembranesList() {
  var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/...");
  var itemList = ss.getSheetByName('Answers').getRange("Q1:Q").getValues();
  var itemCount = itemList.filter(String).length;
  var itemArray = [];
  for (var i = 0; i < itemCount; i++) {
    itemArray[i] = itemList[i];
  }
  var form = FormApp.getActiveForm();
  var item = form.addListItem();
  item.setTitle('test question');
  item.setChoiceValues(itemArray);
}