使用循环在 Google 表单中使用 Google Apps 脚本创建选项

Using Loop to Create Choices in Google Forms with Google Apps Script

我有以下代码

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 表单的下拉菜单中。我来不及了。

我得到的错误是

Cannot convert Array to Choice[].

我有什么问题吗?谢谢

我找到了解决方案。

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 循环来为数组提供精确的维度。我注意到当我有正确的数组维度时我的第一个修复工作,所以我需要一个循环来创建随着行数增加的精确维度。