2015-08-09 101 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