这是我第一次发帖,所以如果我遗漏了任何重要细节,请耐心等待。
无论如何,总结一下这个问题:我一直在尝试让一个脚本在 Google 脚本制作器上运行,以格式化连接到表单的电子表格,以便直接转到我的电子邮件。
所以基本上用户表单 --> 电子表格 --> 我的电子邮件
问题非常标准:
- 有什么问题吗?
- 您在哪里
但是我想使用的一个问题是“这个问题的优先级是什么?”高还是低。我有多项选择格式,所以它是一个简单的选择。
我想要的伪代码:
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);
}
最佳答案
让我们看一下 if(message.indexOf()...
的第一个实例。它有一些问题:
前几行,
message
被设置为空字符串...因此您在其中找不到“优先级”字符串。if
语句将indexOf()
的返回值视为 bool 值。但是,当未找到某个项目时,.indexOf()
的返回码为-1
,这是“true-ish”。如果找到该字符串,并且该字符串位于搜索主题的开头,则返回将为0
,即“false-ish”。如果在任何其他位置找到它,则该值将为“>0”,也是“true-ish”。else
中存在拼写错误。比较==
应该是赋值=
,或者如果您愿意的话+=
。看周围的代码,这一段看起来像是以前版本留下的,可以删除。
现在看第二个实例。
现在应该填充
消息
。但是,比较仍然使用.indexOf()
的错误 bool 解释。搜索字符串包含一批空格...但是之前循环响应的代码使用制表符将“标题”与“值”分开,因此搜索将始终返回“-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:您会明白为什么建议保持表单问题简短,例如“优先级”,并将解释性句子保留为辅助文本!
关于javascript - 用于格式化电子表格的 Google 脚本制作工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17973497/