2013-06-22 162 views
0

我想弄清楚我的Google Apps腳本出了什麼問題。當第2列中的任何單元格不再具有「 - 」而下一個單元格爲「否」時,我試圖發送電子郵件。顯然,sendEmail函數由於某種原因不起作用。爲什麼sendEmail功能不起作用?

我舉了一個小電子表格的例子。我想在第三行匹配時發送電子郵件。

1 2 3 
1 00 - Yes 
2 00 - No 
3 00 x No 

這裏是我的代碼:

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    if(s.getName() == "Sheet4") { //checks that we're on the correct sheet 
     var r = s.getActiveCell(); 
     var nextCell = r.offset(0, 1); 
     if((r.getColumn() == 2) && (r.getValue() !== '-') && (nextCell.getValue() === 'No')){ //checks the cell 
      MailApp.sendEmail('[email protected]', 'test email from Google Spreadsheet', 'Let me know if this came through ok');  
     } 
    } 
    } 
+0

您的腳本確實有效 - 當您在第2列中編輯一個值以使其不是「-''時,它會發送一封電子郵件。任何其他列中的編輯都不會執行任何操作。你能更清楚你期望腳本做什麼嗎? – Mogsdad

+0

它適合你嗎?當我用我的電子郵件地址替換[email protected]時,我在第2列中編輯了除' - '以外的值,並且不會發送電子郵件。你確定你測試過嗎? – Darthvazor

+0

我們一直關注這個腳本的錯誤部分 - 問題不在於您發送郵件的邏輯;問題在於您正在使用簡單觸發器無法提供的服務。 (當我測試時,我用日誌替換了'MailApp.sendEmail',只是爲了測試邏輯是否正常工作。) – Mogsdad

回答

1

onEdit()函數是簡單觸發函數的一個例子。如Understanding Triggers所述,簡單觸發器無法訪問需要身份驗證的服務。這就是MailApp和GmailApp不可用於發送郵件的原因。

+0

噢,好的。感謝您發佈信息。我很感激。因此對於這個腳本,我們該如何解決它,因爲OnEdit函數對MailApp沒有用處?我不熟悉GAS,你能幫我弄清楚嗎? – Darthvazor

1

首先,要檢查不平等是!=的條件。因此請嘗試下面的修改代碼。 其次,你正在發送電子郵件到[email protected]。我假設實際的代碼將電子郵件發送到一個真實的地址。

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    if(s.getName() == "Sheet4") { //checks that we're on the correct sheet 
     var r = s.getActiveCell(); 
     var nextCell = r.offset(0, 1); 
     if((r.getColumn() == 2) && (r.getValue() != '-') && (nextCell.getValue() == 'No')){ //checks the cell 
      MailApp.sendEmail('[email protected]', 'test email from Google Spreadsheet', 'Let me know if this came through ok');  
     } 
    } 
    } 
+0

事實上,'!=='是一個有效的比較運算符,「嚴格不等於」,它比較值和類型。例如,'5!='5''將評估錯誤(它們具有相同的值),但'5!=='5''會評估爲真(相同的值,但不同的類型)。 – Mogsdad

+0

Mogsdad是正確的。一切都按預期工作,但命令「MailApp.sendEmail('[email protected]','從Google Spreadsheet測試郵件','讓我知道這是否通過確定');」由於某種原因似乎不執行。 – Darthvazor

相關問題