1

这是我第一次发帖,如果我遗漏了任何重要的细节,请多多包涵。

无论如何,总结一下这个问题:我一直在尝试让一个脚本在 Google Script maker 上工作,以格式化一个连接到表单的电子表格,直接进入我的电子邮件。

所以基本上用户表单->电子表格->我的电子邮件

这些问题很标准:

  1. 有什么问题?
  2. 你现在在哪里

但是我想使用的一个问题是“这个问题的优先级是什么?” 高或低。我有多项选择格式,所以它是一个简单的选择。

我想要的伪代码:

if (priority = low) put #priority low onto the email

很简单,但是我似乎无法让它工作,这是我的代码:

function sendFormByEmail(e) 
{    
    // Remember to replace XYZ with your own email address
    var email = "email"; 

    var subject = "Help Desk Form Submitted";  

    var s = SpreadsheetApp.getActiveSheet();
    var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
    var message = ""; 
    var priority = "";

    if(message.indexOf("What is the priority of this problem? =           Low")){
        priority += "#priority low";
    }
    else
        priority == "GFHHFFHAHFH ";

    for(var i in headers){
        message += headers[i] + ' =  \t \t'+ e.namedValues[headers[i]].toString() + "\n\n";  }

    if (message.indexOf("What is the priority of this problem? =           Low"))
        message += "This is a test";
    else
        message += "This is not a test";

    MailApp.sendEmail(email, subject, message); 
}
4

1 回答 1

0

让我们看一下 的第一个实例if(message.indexOf()...。它有一些问题:

  • 几行之前,message被设置为一个空字符串......所以你不会在其中找到“优先级”字符串。

  • if语句将返回的indexOf()值视为布尔值。但是,返回代码.indexOf()-1在未找到项目时,这是“真实的”。如果找到了字符串,并且位于搜索主题的开头,则返回将是0,这是“假的”。如果在任何其他位置找到它,则该值将是 `>0',也是“true-ish”。

  • else,有一个错字。比较==应该是 assignment =,或者+=如果您愿意。

  • 查看周围的代码,这部分看起来像是以前版本遗留下来的,可以删除。

现在看第二个例子。

  • 现在message应该填充。但是,比较仍然使用不正确的布尔解释.indexOf()

  • 搜索字符串包含一批空格......但之前循环通过响应的代码使用制表符将“标题”与“值”分开,因此搜索将始终返回“-1”(将被解释为true) .

还有一些其他的整理物品。你可能需要:

function sendFormByEmail(e) 
{    
  Logger.log(JSON.stringify(e));
  var email = Session.getEffectiveUser().getEmail();
  var subject = "Help Desk Form Submitted";  
  var message = ""; 

  var s = e.range.getSheet(); // Sheet that received form response
  var headers = s.getDataRange().getValues()[0];   

  for (var question in headers) {
    message += headers[question] + ' = \t\t' + e.values[question] + '\n\n';
  }

  // Add text relative to the priority of the reported issue.
  if (e.namedValues["What is the priority of this problem?"].toString() === "Low")
    message += "This is a test";
  else
    message += "This is not a test";

  Logger.log(message);
  MailApp.sendEmail(email, subject, message); 
}

PS:您可以看到为什么建议使用简短的形式问题,例如“优先级”,并将解释句留作辅助文本!

于 2013-07-31T16:40:46.023 回答