Google Script未能成功完成

时间:2015-08-09 12:28:41

标签: google-apps-script

我最近调整了一段简短的脚本,当“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);

}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

只要非&#34; FAIL&#34;您的找到的变量为空发生在您的脚本中,我认为您的if(找到)正在创建错误消息。

您可以初始化变量:

var found = false;

在开始测试之前。这样,您的if(找到)将为false,它将跳至您的发送电子邮件代码。