2017-09-13 95 views
1

我有一個長期的形式/電子表格/腳本 - 發送電子表格編輯觸發的電子郵件。觸發器正在工作,但電子郵件沒有發送。我已經放棄了腳本並重新創建 - 再次授權。谷歌腳本 - 觸發工作,但電子郵件不發送

function sendNotification() { 
    //Get Active spreadsheet and worksheet 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    var sheet = spreadsheet.getSheetByName("Change Requests"); 
    var sheet2 = spreadsheet.getSheetByName("Email Addresses"); 

    //Set row for which to send notification 
    //get values 
    var lastRow = sheet.getRange(row, 1, 1, sheet.getLastColumn()); 
    var values = lastRow.getValues(); 

    //Other Variables 
    var body = "<HTML><BODY>"; 
    var stuNumber = values[0][2]; 
    var stuName = values[0][3].toString(); 
    var stuHouse = values[0][5].toString(); 
    var gradeLevel = values[0][6].toString(); 
    var oldCourse = values[0][7].toString(); 
    var newCourse = values[0][8].toString(); 
    var subject = "New course change request submitted for " + stuName; 
    var academicAdviser; 
    var cc_recipients = sheet2.getRange(4, 2).getValue(); 

    //Send notification email 
    try { 
    MailApp.sendEmail(academicAdviser, subject, body, {htmlBody: body, noReply: "True", cc: cc_recipients}) 
    } 
    catch (f) { 
    Browser.msgBox(f.message); 
    } 
} 
+0

把這個放在你的代碼中'Logger.log(MailApp.getRemainingDailyQuota())'看看你得到了什麼值或者在這裏記錄catch塊的錯誤。 –

回答

1

在這一行:

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 

電子表格被設定爲activeSheet這不是一個電子表格

在這一行:

var lastRow = sheet.getRange(row, 1, 1, sheet.getLastColumn()); 

行是未定義。

在該行:

MailApp.sendEmail(academicAdviser, subject, body, {htmlBody: body, noReply: "True", cc: cc_recipients}) 

academicAdviser是未定義和htmlBody設置爲<HTML><BODY>這將不產生輸出htmlBody參數。

而不是使用這個的:

Browser.msgBox(f.message); 

您可以考慮使用用SpreadsheetApp.getUi()提示()或警告()

而且我認爲這是增加MailApp一個好主意。 getRemainingDailyQuota()可以避免您的配額超出配額。

看完你的代碼後,我猜想這可能是一個好主意,你可以閱讀this section