2015-08-09 105 views
0

我最近修改了一小段脚本,在“Google文档”电子表格中出现特定响应(单词FAIL)时自动发送电子邮件给我,该电子表格收集志愿者使用'Google Form'记录每周对救生设备的检查。Google脚本未能成功完成

FAIL上的电子邮件运行良好,已通过一些FAIL响应进行测试。但是,作为'所有者'表单,我收到来自Google的通知,对于每个正常提交的PASS响应,告诉我脚本未能成功完成。

15年8月4日上午10时57分 SendGoogleForm 的ReferenceError: “发现” 没有被定义。 (第35行,文件“守则”) formSubmit

它完成成功,如果失败响应被提交,所以我怀疑的是,由于我没有经验的脚本,我还没有定义的时候发现应该发生什么“不真正'。

对于一个更有经验的脚本编写者来说,这可能显而易见地显而易见,但是我用'Else'尝试过的东西似乎都不起作用。

任何建议将不胜感激。

函数初始化(){

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 = "[email protected]"; 

// 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

当脚本中出现非“失败”时,您发现的变量为空,我认为您的if(found)正在创建错误消息。

您可以初始化您的变量:

var found = false;

开始测试之前。这样,你的if(找到)将是假的,它会跳到你的发送电子邮件代码。

+0

这确实会停止错误通知,但会导致为每个响应发送电子邮件。该脚本的想法是仅在发现失败时才发送电子邮件。感谢您的回复。 – MRROVIS

+0

那么不应该在你的电子邮件代码里面(找到)? – allanquartz

+0

发送部分代码的电子邮件正在执行“每个”运行,但您只希望它在执行时发现== true。它看起来像失败的原因是因为错误代码阻止了电子邮件被发送,而不是因为发现==真。 – allanquartz

0

也许u可以使用 if (e.namedValues["Pass or Fail"] == "Fail") { ... } 其中“通过或失败“是形式问题标题。还可以使用​​来捕获写入响应的工作表行。

+0

表单上有几个规定的问题,答案各不相同,不仅仅是通过或失败,但不适用,失效日期和数字答案。目前,脚本在最新的提交中发现单词FAIL时发送电子邮件,这正是我所需要的。我可以关闭错误通知,但我觉得这只是隐藏我的草率工作!感谢您花时间回复。 – MRROVIS