在 google 表单中添加复选框选项

Adding choices to check box in google form

我正在尝试在 Google 表单的复选框中添加新选项。 我正在尝试拥有与从 select 发送的文件一样多的复选框。

function listFilesInFolder() {  
  var folderName = "Box A";
  var folder = DriveApp.getFolderById('some id');
  var contents = folder.getFiles();

  var list = []; 
  list.push(['Name','ID','Size']);

  var files = folder.getFiles(); 
  while (files.hasNext()) {
    file = files.next();
    //spread sheet info if needed
    var row = []
    row.push(file.getName(), file.getId(), file.getSize())
    list.push(row);

    var name = file.getName();
    AddToDropDown(name);
    console.log(name)
  }
}

function AddToDropDown(name) {
  var form = FormApp.openById('some id');
  var items = form.getItems();
  var ImageSelection = items[7].asCheckboxItem();
  ImageSelection.setChoices([
    ImageSelection.createChoice(ImageSelection.getChoices().toString()),
    ImageSelection.createChoice(name),
  ])    
}

我试过这种方法,

function AddToDropDown(name) {
  var form = FormApp.openById('some id');
  var items = form.getItems();
  var ImageSelection = items[7].asCheckboxItem();
  ImageSelection.createChoice(name);   
}

似乎都不起作用。有什么想法吗?

  • 您想将从文件夹中检索到的文件名添加为复选框。
  • 您想为每个复选框指定每个文件名。

如果我的理解是正确的,这个修改怎么样?本次修改,修改了你的脚本。

此修改脚本的流程:

  1. 检索文件名并将它们放入数组。
  2. 使用 createChoice() 和检索到的文件名创建 "Choice" 个对象。
  3. 使用 setChoices() 设置 "Choice" 个对象。

修改后的脚本:

function addfileselect() {
  var folder = DriveApp.getFolderById('1--5CnFK5DtptuO1bUu6MsA9oTknr-Fw2');
  var files = folder.getFiles();
  var names = [];
  while (files.hasNext()){
    var file = files.next();
    names.push(file.getName());
  }
  var form = FormApp.openById('1gcktQP5bKxCtAvtlgz4d9x7zI6M4koRmZkkjgefswIg');
  var items = form.getItems();
  var ImageSelection = items[7].asCheckboxItem();
  var choices = ImageSelection.getChoices();
  for (var i = 0; i < names.length; i++) {
    var choice = ImageSelection.createChoice(names[i]);
    choices.push(choice);
  }
  ImageSelection.setChoices(choices);
}

注:

  • 本次修改,如果已有复选框,则增加文件名复选框。如果您只想添加检索到的文件名的复选框,请将 var choices = ImageSelection.getChoices(); 替换为 var choices = [];.
  • 添加的checkbox数量较多时可能会出错

参考文献:

如果我误解了您的问题,这不是您想要的结果,我深表歉意。

我是怎么解决的


  var folder = DriveApp.getFolderById('1--5CnFK5DtptuO1bUu6MsA9oTknr-Fw2');
  contents = folder.getFiles();
  var list = [];

  var files = folder.getFiles();

  while (files.hasNext()){

    file = files.next();

    list.push(file.getName());

    var name = file.getName();


    //console.log(name)
  }
     AddToDropDown(list);



 }


function AddToDropDown(row) {
   console.log(row.length)
   var form = FormApp.openById('1gcktQP5bKxCtAvtlgz4d9x7zI6M4koRmZkkjgefswIg');
   var items = form.getItems();
   var ImageSelection = items[0].asCheckboxItem();   
   ImageSelection.setChoiceValues(row.sort());


}```