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