You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Form预填复选框答案失败,FormApp.CheckboxItem.createResponse参数不匹配报错

报错原因

Google Form的复选框组件CheckboxItem的createResponse方法要求传入字符串数组类型的参数,用于支持多选需求。你传入了单个字符串格式的答案"Alice",参数类型不匹配,所以触发报错。
另外你提供的代码中重复写了两次FormApp.ItemType.CHECKBOX的分支逻辑,属于冗余代码,建议删除。

修复方案

把复选框分支的传参调整为数组格式即可,如果你后续有复选框多选的需求,表格中答案用逗号分隔的话,可以再加一步拆分逻辑适配多选项场景,修改后的代码如下:

function readSpreadsheet() {
  var formid = 'formidgoeshere';
  var ssid = 'ssidgoeshere';
  var sheetname = 'answers'

  var sheet = SpreadsheetApp.openById(ssid).getSheetByName(sheetname);
  var range = sheet.getDataRange();
  var numRows = range.getNumRows();
  var values = range.getValues();
  var form = FormApp.openById(formid)


  var items = form.getItems();
  for (var i = 1; i < numRows; i++) {
    var value = values[i];
    Logger.log(value)
    var formResponse = form.createResponse();
    var k = 0;
    for (var j = 0; j < items.length; j++) {
      var item;
      switch (items[j].getType()) {
        case FormApp.ItemType.CHECKBOX:
          item = items[j].asCheckboxItem();
          Logger.log("Item number " + j + " is titled: " + item.getTitle() );
          // 核心修改:将字符串转为数组,多选场景下可拆分逗号分隔的答案
          var checkboxAnswer = value[k++];
          // 兼容单选/多选:如果是单个值直接包裹为数组,多个值按逗号拆分
          var answerArr = typeof checkboxAnswer === 'string' ? checkboxAnswer.split(',').map(s => s.trim()) : [checkboxAnswer];
          formResponse.withItemResponse(item.createResponse(answerArr));
          break;  
        case FormApp.ItemType.LIST:
          item = items[j].asListItem();
          Logger.log("Item number " + j + " is titled: " + item.getTitle() );
          formResponse.withItemResponse(item.createResponse(value[k++]));
          break; 
        case FormApp.ItemType.MULTIPLE_CHOICE:
          item = items[j].asMultipleChoiceItem();
          Logger.log("Item number " + j + " is titled: " + item.getTitle() );
          formResponse.withItemResponse(item.createResponse(value[k++]));
          break; 
        case FormApp.ItemType.PARAGRAPH_TEXT:
          item = items[j].asParagraphTextItem();
          Logger.log("Item number " + j + " is titled: " + item.getTitle() );
          formResponse.withItemResponse(item.createResponse(value[k++]));
          break; 
        case FormApp.ItemType.TEXT:
          item = items[j].asTextItem();
          Logger.log("Item number " + j + " is titled: " + item.getTitle() );
          formResponse.withItemResponse(item.createResponse(value[k++]));
          break;         
        default:
          Logger.log("#" + (i + 1) + ":Do nothing for item " + j + " of type " + items[j].getType());
          continue;
      } 
      if(j==0){
        Logger.log("This item is the FORM NUMBER");        
      };
    }
    formResponse.submit();
  }
}

如果你的表格中复选框答案都是单个值,不需要支持多选,直接简化为item.createResponse([value[k++]])即可。

内容的提问来源于stack exchange,提问作者JohnTyler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:06:04