脚本调整:更改为表单上的复选框项而不是列表项

时间:2016-10-31 11:14:35

标签: javascript google-apps-script google-sheets google-form

我在Jason Jurotich的YouTube上找到了这个剧本。

https://www.youtube.com/watch?v=sRlG58VKWNs

允许更新文件夹中的多个表单 (问题类型=从列表中选择)。

我想知道是否可以将其修改为也包含复选框问题。

我尝试将脚本加倍,并在第二部分更改

var agentList = item.asListItem()     to    var agentList = item.asCheckboxItem()

这不起作用。我搜索了其他脚本但没有成功。

杰森的剧本如下

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(1, 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);
 }
}

雷博特先生 - 我试试

function updateLists() {
var files = DriveApp.getFolderById("0B8ZhY7dtctaMb0Vmb2RLdjhWM2M").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() === "EVENTS"){

     var agentList  = item.asCheckboxItem()//checkbox option
     var agentList = item.asListItem()//list option

     }
    }
var ss = SpreadsheetApp.getActive().getSheetByName("EVENTS");
  var agentValues = ss.getRange(1, 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);
}}

只有列表项更新
错误:项目类型的转换无效:LIST。 (第12行,文件&#34;代码&#34;)

也许它的代码之一?

1 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是您正在尝试将一个multipleChoice类型的问题变成一个复选框类型(这将返回您遇到的错误)。您已观看的教程显示了如何根据问题类型动态更改问题的选项。我已经测试了您的代码,如果您的表单的问题类型是checkBox,它就能正常工作。

code.gs

enter image description here

表:

enter image description here

结果:

enter image description here

希望这有助于澄清您遇到的问题。

修改

您仍然会为每个变量声明正确的类型:

代码示例:

var agentList = item.asListItem()//list option
var foodList  = item.asCheckboxItem()//checkbox option

//code for checkbox
if (item.getTitle() === "EVENTS"){

     var eventList  = item.asCheckboxItem()//checkbox option

     }

//code for list
if (item.getTitle() === "FOOD"){
     var foodList = item.asListItem()//list option

     }

注意:使用不同的变量名称以避免冲突。作为建议创建一个功能,以保持您的代码干净,易于遵循。添加评论以帮助您跟踪代码的作用。