最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Submitting a form through google scripts - Stack Overflow

programmeradmin3浏览0评论

I need to submit a form in a google script but get this error:

TypeError: Cannot call method "withItemResponse" of undefined

According to the link below, this is how it should be set up ()

Code:

 //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(); 

I need to submit a form in a google script but get this error:

TypeError: Cannot call method "withItemResponse" of undefined

According to the link below, this is how it should be set up https://developers.google./apps-script/reference/forms/form#createResponse()

Code:

 //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(); 
Share Improve this question edited May 29, 2017 at 1:55 danyamachine 1,9281 gold badge19 silver badges21 bronze badges asked May 28, 2017 at 5:40 TeachScienceTeachScience 852 silver badges7 bronze badges 1
  • You didn't define logSummary in your code – JJJ Commented May 28, 2017 at 6:44
Add a ment  | 

1 Answer 1

Reset to default 9

form.createResponse() returns a FormResponse, which you need to assign to a variable.

also, withItemResponse() expects an object of type ItemResponse. I am not familiar with google forms, but maybe this gets you in the right direction:

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./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();

Generally, when the documentation of a method lists as parameter type something else than primitive types like String or Boolean you need to create or aquire an object of that type, like I did with createResponse. You need to familiarize yourself with these and other principles because the GoogleAppsScript documentation assumes knowledge of them.

发布评论

评论列表(0)

  1. 暂无评论