【问题标题】:Submitting a form through google scripts通过谷歌脚本提交表单
【发布时间】:2017-05-28 05:40:40
【问题描述】:

我需要在 google 脚本中提交表单,但收到此错误:

TypeError:无法调用未定义的方法“withItemResponse”

根据下面的链接,应该是这样设置的https://developers.google.com/apps-script/reference/forms/form#createResponse()

代码:

 //Submit form

  var formID = row[24]; 

  var form = FormApp.openById(formID);
  Logger.log(form.getId());  //returns correct ID
  form.createResponse() ;
  form.FormResponse.withItemResponse('Core Teachers', logSummary);  
  //form has only two questions, a short text and a paragraph text
    form.FormResponse.submit(); 

【问题讨论】:

  • 您没有在代码中定义logSummary

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


【解决方案1】:

form.createResponse() 返回一个FormResponse,您需要将其分配给一个变量。

另外,withItemResponse() 需要 ItemResponse 类型的对象。我不熟悉谷歌表单,但也许这会让你朝着正确的方向前进:

var formID = row[24]; 
var form = FormApp.openById(formID);
var formResponse = form.createResponse();
// get items of form and loop through
var items = form.getItems();
for (index = 0; index < a.length; ++index) {
  var item = items[index]
  // Cast the generic item to the text-item class. You will likely have to adjust this part. You can find the item classes in the documentation. https://developers.google.com/apps-script/reference/forms/item-type.
  if (item.getType() == 'TEXT') {
    var textItem = item.asTextItem();
    var itemresponse = textItem.createResponse('Core Teachers');
    formResponse.withItemResponse(itemresponse);  
  }
}
formResponse.submit();

一般来说,当方法的文档列出的参数类型不是原始类型(如 String 或 Boolean)时,您需要创建或获取该类型的对象,就像我对 createResponse 所做的那样。您需要熟悉这些和其他原则,因为 GoogleAppsScript 文档假定您了解这些原则。

【讨论】:

  • 这会返回一个不同的错误——“找不到带有ItemResponse(string,string)的方法。”
  • 如果 formResponse 是一个对象,我是否需要一个一个地编辑属性 - 例如formResponse.question1 = '核心教师';
  • 我发现表单中的每个项目都有自己的 ID,我正在寻找如何调用每个项目并创建响应。答案要么简单,要么比我想象的要复杂得多。
  • 谢谢!非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多