我正在尝试设置一个Google表单,该表单将创建一个“从列表中选择”问题,每个选项均从特定列的行中绘制。
我已经尝试过此代码,但是对我来说根本没有用。
我到目前为止的代码如下。我能够使用特定列中仅一行的数据(在本例中为该列的最后一行)创建所需的表单问题。
如果有人可以通过向我指示正确的方向来帮助您,如何将每个选定的行分配给一个问题选项。同样,如果这是每次电子表格更新时动态更新问题选项的某种方式。
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()
(末尾的)方法获取值的二维数组。并将numRows
参数(要获取的行数)更改为lr
变量。另外,您可能想从第2行开始。语法为:
getRange(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)
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句