通过谷歌电子表格中的列更改MULTIPLE谷歌表单中的选项的脚本

时间:2015-09-11 17:34:33

标签: forms google-apps-script

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

www.sitename.com/hyderabad/anything

2 个答案:

答案 0 :(得分:0)

考虑logging custom messages找出为什么它没有查看多种形式。可能因为# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: name: MyText contact: MyText address_id: two: name: MyText contact: MyText address_id: 和其他一些需要的行不在.setChoiceValues()循环中。 while也可以在此之前创建一次。

agentNames语句也没有真正做任何事情。 continue var将仅包含最后一个查看的内容。按原样,最后一个之前的所有表单文件都放在var form中,然后替换为找到的下一个表单文件。

答案 1 :(得分:0)

根据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);
 }
} 
相关问题