我最近调整了一段简短的脚本,当“Google文档”电子表格中出现特定回复(单词“失败”)时自动向我发送电子邮件,收集使用“Google表单”的志愿者回复记录他们对救生设备的每周检查。
FAIL上的电子邮件运行良好,通过几次失败回复对其进行了测试。但是,作为表单“所有者”,我收到了Google的通知,提交的每个正常PASS回复都告诉我该脚本未能成功完成。
8/4/15 10:57 AM SendGoogleForm ReferenceError:未定义“找到”。 (第35行,文件“代码”) formSubmit
如果提交了FAIL响应,它会成功完成,所以我怀疑,由于我对脚本的经验不足,我没有定义当发现“不正确”时会发生什么。
对于一位经验丰富的剧本作家来说,这可能是显而易见的,但我用'Else'试过的东西似乎都没有用。
任何建议都将不胜感激。
function Initialize(){
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers)
ScriptApp.deleteTrigger(triggers[i]);
ScriptApp.newTrigger("SendGoogleForm")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onFormSubmit().create();
}
功能SendGoogleForm(e){
if (MailApp.getRemainingDailyQuota() < 1) return;
// Recipients email address
var email = "12345@abcde.co.uk";
// Subject for Google Form email notification
var subject = "Weekly Checks - FAIL Submitted";
var s = SpreadsheetApp.getActiveSheet();
var columns = s.getRange(1, 1, 1, s.getLastColumn()).getValues()[0];
var message = "A check form has been submitted containing a ** FAIL ** response: ";
// Look for a 'FAIL' response
var key = columns[keys];
for ( var keys in columns ) {
if ( e.namedValues[columns[keys]] == 'FAIL') {
found = true;
}
}
// Only include form fields that are not blank
if (found)
for (var keys in columns) {
var key = columns[keys];
if (e.namedValues[key] && (e.namedValues[key] !== "")) {
message += key + ' : ' + e.namedValues[key] + "\n\n";
}
}
MailApp.sendEmail(email, subject, message);
}
答案 0 :(得分:0)
也许你可以使用
if ( e.namedValues["Pass or Fail"] == "Fail" ) { ... }
其中“通过或失败”是表单问题标题。并且还使用e.range.getRow()
来捕获写入响应的工作表行。
答案 1 :(得分:0)
只要非&#34; FAIL&#34;您的找到的变量为空发生在您的脚本中,我认为您的if(找到)正在创建错误消息。
您可以初始化变量:
var found = false;
在开始测试之前。这样,您的if(找到)将为false,它将跳至您的发送电子邮件代码。