从已存在的Google表单中提取复选框或多项选择

时间:2013-06-15 19:59:23

标签: google-apps-script google-form

我创建了一个尚未发布的Google表单。我想提取所有表单的项目,项目类型和项目选项(如果适用),以便在邮件合并中使用。我无法使用由Google创建的响应电子表格,因为该表单的用户可能无法选择给定项目的所有可用选项。

我的脚本功能很充分,除非在尝试将复选框(或多项选择题或网格问题)的选项写入电子表格时。当使用“getChoice”方法时,我的电子表格显示了一个单元格数组“= {”Choice“,”Choice“,”Choice“}。”它反复显示“选择”一词,而不是在我的表单上创建的实际选择。

如何将实际选项写入电子表格,而不是数组中的“选择”?我是一个javascript noob,所以我为任何不优雅的编码道歉!

function extractForm() {
  var existingform = FormApp.openByUrl('https://docs.google.com/a/forms/d/fc/viewform');
  var items = existingform.getItems();
  var itemcount = existingform.getItems().length
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();  

  for (var i = 1; i <= itemcount; ++i) {
  if (items[i].getType() != 'PAGE_BREAK' && items[i].getType() != 'SECTION_HEADER') {
    sheet.getRange(i,1).setValue(i);
    sheet.getRange(i,2).setValue(items[i].getTitle());
    sheet.getRange(i,3).setValue(items[i].getType());
    };
  if (items[i].getType() == 'CHECKBOX') {
    var chkItem = items[i].asCheckboxItem();
    var choicecount = chkItem.getChoices().length
    for (var j = 1; j <= choicecount; ++j) {
      sheet.getRange(i,4,1,j).setValue(chkItem.getChoices());
    };
    };
  };
};

1 个答案:

答案 0 :(得分:2)

你不应该简单地得到那样的数组元素值吗?

for (var j = 1; j <= choicecount; ++j) {
  sheet.getRange(i,4,1,j).setValue(chkItem.getChoices()[j].getValue());
};