2016-06-16 174 views
0

我工作的一個相當簡單的腳本應該處理電子表格中的新值,然後發送電子郵件到指定的地址。我面臨這個問題。我的代碼如下:自動發送電子郵件有關編輯電子表格谷歌

function onEdit(e) { 
    //part of the code for checking e.range to process only updated values 
    sendEmail(); 
} 
function sendEmail() { 
    // arguments are missed only for demo 
    GmailApp.sendEmail(); 
} 

雖然我使用的是「簡單的扳機」,我的功能「sendEmail()」的作品只有當我從腳本編輯器中啓動它。我允許代表我第一時間發送電子郵件,然後功能正常工作。但是,如果我要更改電子表格中的值 - 函數「onEdit(e)」會處理新數據,但函數「sendEmail()」不會執行任何操作。

我部分通過項目的觸發器從「當前項目的觸發器」菜單解決了這個問題。在這種情況下,函數「sendEmail()」正常工作,但我無法訪問有關更新的信息。 爲了我的目的,我可以使用第二種方式,每次都可以「手動」查找新值,但我希望優化這項工作。

所以,我的問題是:

  1. 是我上面描述正確的過程或我犯了一個錯誤 地方?
  2. 如果處理本身,就是一種方法,這兩種情況結合起來?

謝謝!

+0

非常感謝你 - 我的文檔中錯過了這個。問題解決了) – NoisyFlasher

+0

@soup也許你會重新發布你的評論作爲答案,我會將這個問題標記爲答案? – NoisyFlasher

回答

0

你正確地理解了(as the docs say)簡單的觸發器也不能發送電子郵件,因爲它們運行未經授權。通過資源菜單創建的installable trigger可以:它與創建觸發器的用戶具有相同的權限。如果它被設置爲在編輯時觸發,它將獲得與簡單觸發器相同類型的event object

所以,一個最小的例子是這樣的,設置爲「上編輯」運行:

function sendMail(e) { 
    MailApp.sendEmail('[email protected]', 'sheet edited', JSON.stringify(e)); 
} 

它的電子郵件JSON格式的整個事件對象。

旁白:如果你的腳本只需要發送電子郵件,但是不能讀取,使用MailApp代替GmailApp保持權限更窄的範圍。

相關問題