首页 > 解决方案 > 例外:参数(数字)与 FormApp.TimeItem.createResponse 的方法签名不匹配。(第 91 行,文件“代码”)

问题描述

我正在尝试借助 google sheet 中的一些数据自动填充 google 表单。为包含 timeitme 的表单创建响应,但是当我运行它给出异常错误的代码时它不起作用:异常:参数(编号) 与 FormApp.TimeItem.createResponse 的方法签名不匹配。(第 91 行,文件“代码”)


function autoEntry(){
  
   var workBook = SpreadsheetApp.getActiveSpreadsheet();
   var workSheet= workBook.getSheetByName("Sheet1");
   var data = workSheet.getDataRange().getValues();
   //Logger.log(data)
   var headers = data[0]; 
  var form = FormApp.openById("1ZBx7lxqwE2LDmPYL93U5cnRb_wBMjEz1J9he2JDUiQY");
  var items = form.getItems();
   for (var row = 1; row < data.length; row++ ) {
      Logger.log("Generating response from spreadsheet for row="+row);
      var response = form.createResponse();
    for (var i=0; i<items.length; i++) {
       var ques = items[i].getTitle();           // Get text of question for item
       
      
       var quesCol = headers.indexOf(ques);
      
      var resp = ques ? data[row][quesCol] : "";
     // Logger.log(resp)
       var type = items[i].getType().toString();
       Logger.log("Question='"+ques+"', resp='"+resp+"' type:"+type);
       switch (items[i].getType()) {
        case FormApp.ItemType.TEXT:
          var item = items[i].asTextItem();
          break;
        case FormApp.ItemType.PARAGRAPH_TEXT: 
          item = items[i].asParagraphTextItem();
          break;
        case FormApp.ItemType.LIST:
          item = items[i].asListItem();
          break;
        case FormApp.ItemType.MULTIPLE_CHOICE:
          item = items[i].asMultipleChoiceItem();
          break;
        case FormApp.ItemType.CHECKBOX:
          item = items[i].asCheckboxItem();
          // In a form submission event, resp is an array, containing CSV strings. Join 
          // into 1 string.
          // In spreadsheet, just CSV string. Convert to array of separate choices, ready 
          // for createResponse().
        if (typeof resp !== 'string')
         resp = resp.join(',');      // Convert array to CSV
        resp = resp.split(/ *, */);   // Convert CSV to array
          break;
        case FormApp.ItemType.DATE:
          item = items[i].asDateItem();
          resp = new Date( resp );
          break;
//        case FormApp.ItemType.DATETIME:
//          item = items[i].asDateTimeItem();
//          resp = new Date( resp );
          break;
        case FormApp.ItemType.TIME:
           item = items[i].asTimeItem();
          
         
           break;
        default:
          item = null;  
          break;
      }
      // Add this answer to our pre-filled URL
      if (item) {
        var respItem = item.createResponse(resp);
        response.withItemResponse(respItem);
      }else if (item.getType().toString() == "TIME"){
        var respItem = item.createResponse(1,1);
        response.withItemResponse(respItem);
        
      }

      // else if we have any other type of response, we'll skip it
      else Logger.log("Skipping i="+i+", question="+ques+" type:"+type);
       

    
    }
    response.submit();
     
  }

标签: google-apps-script

解决方案


方法的参数Form.TimeItem.createResponsehourand minute,但是你的代码通过了Date object

请参阅下面的文档。 https://developers.google.com/apps-script/reference/forms/time-item#createresponsehour,-minute

var respItem = item.createResponse(resp.getHours(), resp.getMinutes());

推荐阅读