Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 通过google电子表格中的一列更改多个google表单中的选项的脚本_Google Apps Script_Google Sheets_Google Forms - Fatal编程技术网

Google apps script 通过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")

这个问题与我上次提出的问题类似,但这次,我需要更改多个标题相同的google表单中的选项:每个表单中你的名字是什么,问题标题是相同的,但我必须在这个问题下将选项更改为数百个表单。所有表格必须根据谷歌电子表格中的一列进行更改。下面的代码几乎可以正常工作,我没有收到任何错误,但出于某种原因,它只会更改一个表单,而不会更改文件夹中的所有表单。任何帮助都将不胜感激

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);
 }
}