gpt4 book ai didi

google-apps-script - 从电子表格中的列动态更新 Google 表单 'Choose from list' 选项

转载 作者:行者123 更新时间:2023-12-03 04:28:07 25 4
gpt4 key购买 nike

我正在尝试设置一个 Google 表单,该表单将创建一个“从列表中选择”问题,每个选项都是从特定列中的行中提取的。

我已经尝试过this code ,但它对我来说根本不起作用。

到目前为止我拥有的代码如下。我可以使用特定列中仅一行的数据(在本例中为该列的最后一行)创建所需的表单问题。

如果有人可以帮助我指出如何将每个选定行仅分配给一个问题选项的正确方向。另外,如果这些是每次电子表格更新时动态更新问题选项的某种方式。

var idColumn = 1; // ID of the selected column

//gets document ID from spreadsheet
//(not 100% sure the role of all of these lines, have worked it out from other examples of code online)
function spreadSheetGetter() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var lr = rows.getLastRow();

var docId = sheet.getRange(lr,idColumn,1,1).getValue(); //gets the data from the last row in selected column

fillFormData(docId);
}


//fills for with document ID
function fillFormData(docId) {
var form = FormApp.openById('MY FORMS ID');
var item = form.addListItem();

item.setTitle('Select Existing Customer') //creates the choose from list question
.setChoices([
item.createChoice(docId), //data from row 1
item.createChoice(docId) //data from row 2 etc...
])
}

最佳答案

此声明:

var docId = sheet.getRange(lr,idColumn,1,1).getValue();

仅获取一个值。我认为您需要列中的所有值,因此请使用 getValues() ('s' on the end) 方法获取二维值数组。并将 numRows 参数(要获取的行数)更改为 lr 变量。另外,您可能想从第 2 行开始。语法为:

getRange(row, column, numRows, numColumns)
  • row - 整数范围的起始行
  • column - 范围的起始列的整数
  • numRows - 要返回的整数行数
  • numColumns - 要返回的整数列数

所以,参数需要这样设置:

var docId = sheet.getRange(2,idColumn,lr,1).getValues();

如果电子表格中的第一行有标题名称,您可能不希望在项目列表中包含标题。这就是为什么第一个参数设置为数字 2,从第 2 行开始。

然后,您需要处理二维数组中的数据,并创建一个符合 setChoices(choices) 方法所需格式的新数组,以便添加列表中的每个值。您将需要一个编程循环。这将每次创建一个新的项目值数组,因此列中的当前值将更新到列表中。

var thisValue = "";
var arrayOfItems = [];
var newItem = "";

for (var i=0;i<docId.length;i++) {
thisValue = docId[i][0];
newItem = "item.createChoice('" + thisValue + "')";
arrayOfItems.push(newItem);
};

完整的函数看起来像这样:

//fills item with document ID
function fillFormData(docId) {
var form = FormApp.openById('MY FORMS ID');
var item = form.addListItem();

var thisValue = "";
var arrayOfItems = [];
var newItem = "";

for (var i=0;i<docId.length;i++) {
thisValue = docId[i][0];
Logger.log('thisValue: ' + thisValue);
newItem = item.createChoice(thisValue);
arrayOfItems.push(newItem);
};

item.setTitle('Select Existing Customer') //creates the choose from list question
.setChoices(arrayOfItems)
};

关于google-apps-script - 从电子表格中的列动态更新 Google 表单 'Choose from list' 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30388208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com