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