Google Apps脚本通过邮件发送错误的表单输入

时间:2014-11-05 11:47:23

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

我对编码很陌生,并且对我的小型Google Apps脚本存在以下问题。

任何人都可以告诉我为什么以下脚本没有发送给我/用户(我只使用表单和本脚本)我最新表单回复的具体答案?它总是向我发送表单响应的答案,我第一次使用这个脚本......

function sendAnswerViaMail() {

  var myEmail = Session.getEffectiveUser().getEmail();
  var subject = 'My answer to the 26th question.';
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var formResponse = formResponses[formResponses.length-1];
  var itemResponses = formResponse.getItemResponses();
  var itemResponse = itemResponses[25];
  MailApp.sendEmail (myEmail, subject, itemResponse.getResponse());

}    

1 个答案:

答案 0 :(得分:1)

我想当用户通过触发功能提交表单时会触发你的脚本 你在这里采用的方法更多是逻辑方法,但不幸的是它并不是好方法,因为它没有处理这样一个事实,即2个人几乎可以在同一时间内回答你的表单,并且启动你的脚本的触发器与你的事实无关脚本已记录答案,您可以通过以下方式访问它:

var form = FormApp.getActiveForm();
var formResponses = form.getResponses();

我可以建议您使用表单提交时触发器在启动时为您的函数提供的对象,而不是这种方法:

/**
* function triggered each time the form is submited
*
*/
function submitFormFunc(e) { 
  var user = e.response.getRespondentEmail();
  var items = e.response.getItemResponses();

  var responses={}; // given responses form the user
  var respObj = {};
  for(var i = 0; i< items.length; i++) {
    var it = items[i];
    responses[it.getItem().getId()] = {
      "title":it.getItem().getTitle(),
      "response":it.getResponse()
    };
    respObj[it.getItem().getTitle()] = it.getResponse();
  }
  Logger.log("responses: "+JSON.stringify(responses));
}