我有以下代码
function updateFormTwo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form 1 Responses");
var range = sheet.getDataRange();
var lastRow = range.getLastRow();
var values = range.getValues();
var i = 0;
var dropdown = [[0,0,0]];
var dd = [];
var ddarray = [];
var form = FormApp.openById("1w-IrMmda....0etp5gW-sfAk");
var item = form.getItems();
Logger.log(item);
var list = item[0].asListItem();
var j = 0;
for (i=0; i < lastRow-1; i++){
dropdown[i][0] = values[i+1][1];
dropdown[i][1] = values[i+1][9];
dropdown[i][2] = values[i+1][10];
dd[i] = dropdown[i][0] + " - " + dropdown[i][1] + " - " + dropdown[i][2];
ddarray.push( list.createChoice( dd[i] ) );
}
list.setChoices([ddarray]);
}
我试图从Google电子表格中获取每行3个单元格,将它们连接起来,然后将它们全部显示在另一个Google表单的下拉菜单中。我差不多了。
我得到的错误是
无法将数组转换为选择[]。
我有什么不对?感谢
答案 0 :(得分:1)
我找到了解决方案。
function updateFormTwo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form 1 Responses");
var range = sheet.getDataRange();
var lastRow = range.getLastRow();
var values = range.getValues();
var i = 0;
var j = 0;
//create 2D Array
var dropdown = new Array();
for (i = 0; i < lastRow - 1; i++){
dropdown[i] = new Array();
for (j = 0; j < 3; j++){
dropdown[i][j] = 0;
}
}
var dd = [];
var form = FormApp.openById("1w-IrMmdaY...gW-sfAk");
var item = form.getItems();
var list = item[0].asListItem();
for (i = 0; i < lastRow - 1; i++){
dropdown[i][0] = values[i+1][1];
dropdown[i][1] = values[i+1][9];
dropdown[i][2] = values[i+1][10];
dd[i] = dropdown[i][0] + " - " + dropdown[i][1] + " - " + dropdown[i][2];
}
Logger.log(dd);
list.setChoiceValues(dd);
}
首先,我删除了ddarray
变量并在第二个for循环中使用了list.setChoiceValues(dd);
而不是ddarray.push( list.createChoice( dd[i] ) )
,然后list.setChoices([ddarray]);
。
之后,我创建了for循环,为数组提供了精确的尺寸。我注意到,当我有正确的数组维度时,我的第一个修复工作正常,因此我需要一个循环来创建精确的尺寸,因为行数增加了。