如何使用Google Apps脚本在Google表单中考虑空白答案?

时间:2014-09-10 16:36:21

标签: google-apps-script

我制作了一个Google表单和一个脚本,用于发送包含表单内容的邮件。

有3个字段:A,B,C不是强制性的。 示例:如果我们输入1,5和8,则脚本正在编写:

  

A = 1,B = 5,C = 8

问题是如果B没有给出一个值(A为1,C为3),那么我得到输出:

  

A = 1,B = 3,C =

值有变化! 我该怎么办?

function sendResponses() {
var form = FormApp.getActiveForm();
var responses = form.getResponses();
var lastrow = responses.length - 1;
var itemResponses = responses[lastrow].getItemResponses();
var Total = "A=" + itemResponses[0].getResponse() + ", B=" + itemResponses[1].getResponse() + ", C=" + itemResponses[2].getResponse(),
}

谢谢你, 弗雷德里克

2 个答案:

答案 0 :(得分:0)

使用命名值而不是索引获取响应......不会出现任何可能的混淆。

请参阅documentation here

您可以使用FormApp method getTitle()

检索项目名称

示例:

e.namedValues   {'First Name': ['Jane'], 'Timestamp': ['6/7/2015 20:54:13'], 'Last Name': ['Doe']}  An object containing the question names and values from the form submission

请参阅this other post for a full example

答案 1 :(得分:0)

当我使用此代码时,它会向我提供您想要的结果:

function sendResponses(e) {
  var thisResponse = e.response;
  Logger.log('thisResponse: ' + thisResponse);

  var itemResponses = thisResponse.getItemResponses();
  Logger.log('itemResponses: ' + itemResponses);

  var Total = "A=" + itemResponses[0].getResponse() + ", B=" + itemResponses[1].getResponse() + ", C=" + itemResponses[2].getResponse();
  Logger.log('Total: ' + Total);
}

请注意,您无需获取所有表单回复。您的代码会检索过去和现在的所有回复。您只需获得当前的响应即可。请注意变量 e 作为sendResponses函数中的参数:

function sendResponses(e) {

我创建了一个包含三个文本字段的表单,并没有在第二个字段中放置任何内容。日志打印出来:

  

[14-09-10 16:25:44:265 EDT] thisResponse:FormResponse

     

[14-09-10 16:25:44:267 EDT] itemResponses:   ItemResponse,ItemResponse,ItemResponse

     

[14-09-10 16:25:44:268 EDT]总计:A = 1,B =,C = C

提交表单时会触发该功能:

Form Trigger