Javascript Google Script maker用于格式化电子表格
这是我第一次发帖,如果我遗漏了任何重要的细节,请耐心等待 总之,总结一下这个问题:我一直在尝试让一个脚本在Google script maker上工作,以格式化一个连接到表单的电子表格,直接转到我的电子邮件 因此,基本上用户表单-->电子表格-->我的电子邮件 这些问题相当标准:Javascript Google Script maker用于格式化电子表格,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,这是我第一次发帖,如果我遗漏了任何重要的细节,请耐心等待 总之,总结一下这个问题:我一直在尝试让一个脚本在Google script maker上工作,以格式化一个连接到表单的电子表格,直接转到我的电子邮件 因此,基本上用户表单-->电子表格-->我的电子邮件 这些问题相当标准: 有什么问题吗 你在哪里 然而,我想用的一个问题是“这个问题的优先级是什么?”高还是低。我有多项选择的格式,所以它是一个简单的选择 我想要的Psuedocode: if (priority = low) put #pri
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()…
的第一个实例。它有一些问题:
- 前面几行,
被设置为空字符串…因此您在其中找不到“priority”字符串message
语句将if
的返回视为布尔值。但是,当未找到项时,indexOf()
的返回代码为.indexOf()
,这是“true ish”。如果找到字符串并且位于搜索主题的开头,则返回值将为-1
,即“false ish”。如果在任何其他位置找到它,则该值将为“>0”,也就是“true ish”0
- 在
中有一个输入错误。比较的else
应该是赋值=
,或者=
,如果您愿意的话+=
- 看看周围的代码,这段代码看起来像是以前版本的遗留代码,可以删除
- 现在应该填充
。但是,比较仍然使用了消息
的错误布尔解释.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:你可以看到为什么建议将表单问题保持简短,如“优先级”,并将解释性语句保留为帮助文本!好了!谢谢。使它起作用的部分是if(例如,namedValues[“此问题的优先级是什么?”)。toString()=“低”),这是if语句的条件出了问题。我遇到的问题是在写这篇文章的同时集成我学习JS,并将Google的东西放在那里。再次感谢!