Google apps script 通过google电子表格中的一列更改多个google表单中的选项的脚本
这个问题与我上次提出的问题类似,但这次,我需要更改多个标题相同的google表单中的选项:每个表单中你的名字是什么,问题标题是相同的,但我必须在这个问题下将选项更改为数百个表单。所有表格必须根据谷歌电子表格中的一列进行更改。下面的代码几乎可以正常工作,我没有收到任何错误,但出于某种原因,它只会更改一个表单,而不会更改文件夹中的所有表单。任何帮助都将不胜感激Google apps script 通过google电子表格中的一列更改多个google表单中的选项的脚本,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,这个问题与我上次提出的问题类似,但这次,我需要更改多个标题相同的google表单中的选项:每个表单中你的名字是什么,问题标题是相同的,但我必须在这个问题下将选项更改为数百个表单。所有表格必须根据谷歌电子表格中的一列进行更改。下面的代码几乎可以正常工作,我没有收到任何错误,但出于某种原因,它只会更改一个表单,而不会更改文件夹中的所有表单。任何帮助都将不胜感激 function updateLists() { var files = DriveApp.getFolderById("ID HERE")
function updateLists() {
var files = DriveApp.getFolderById("ID HERE").getFiles()
while (files.hasNext()) {
var file = files.next();
var form = FormApp.openById(file.getId());
continue;
}
var items = form.getItems();
for (var i = 0; i < items.length; i += 1){
var item = items[i]
if (item.getTitle() === "WHAT IS YOUR NAME"){
var agentList = item.asListItem()
}
}
var ss = SpreadsheetApp.getActive().getSheetByName("Sheet1");
var agentValues = ss.getRange(2, 1, ss.getMaxRows() - 1).getValues();
var agentNames = [];
for(var i = 0; i < agentValues.length; i++)
if(agentValues[i][0] != "")
agentNames[i] = agentValues[i][0];
agentList.setChoiceValues(agentNames);
}
考虑一下为什么它不查看多个表单。可能是因为.setChoiceValues和所需的其他一些行不在while循环中。代理名称也可以在while之前创建一次
那个continue语句也没什么用。表单var将只包含最后一次查看的表单。按原样,最后一个表单文件之前的所有表单文件都被放置在var表单中,然后替换为找到的下一个表单文件 根据布莱恩·普(Bryan p)上面提到的内容,我稍微修改了脚本,它终于起作用了。下面是修改后的工作脚本,供希望复制和粘贴的用户使用。请注意:确保文件夹中只有表单,否则会产生错误
function updateLists() {
var files = DriveApp.getFolderById("FOLDER ID HERE").getFiles()
while (files.hasNext()) {
var file = files.next();
var form = FormApp.openById(file.getId())
var items = form.getItems();
for (var i = 0; i < items.length; i += 1){
var item = items[i]
if (item.getTitle() === "QUESTION TITLE HERE"){
var agentList = item.asListItem()
}
}
var ss = SpreadsheetApp.getActive().getSheetByName("SHEET NAME HERE");
var agentValues = ss.getRange(2, 1, ss.getMaxRows() - 1).getValues();
var agentNames = [];
for(var i = 0; i < agentValues.length; i++)
if(agentValues[i][0] != "")
agentNames[i] = agentValues[i][0];
agentList.setChoiceValues(agentNames);
}
}