2012-05-02 173 views
14

我正在尋找模式示例,其中在GoogleAppsForBusiness域中運行的惡魔腳本可以解析傳入的電子郵件。某些消息將包含對不同GAScript的調用,例如,可以更改特定文檔的ACL設置。通過電子郵件觸發Google Apps腳本

我假設別人已經實現了這種模式,但不知道我怎麼去找到例子。

THX

回答

13

您可以在Google Apps腳本user guidetutorials腳本示例。您也可以搜索有關forum的相關討論。但我認爲沒有一個能夠完全符合你的要求,所有的代碼都在那裏,但不是一個腳本。

有人可能會寫這樣的腳本,並且從未發佈它。由於做起來有些簡單,每個人的使用都不一樣。例如,你打算如何標記你的電子郵件(你已經閱讀,執行過的那些)?使用gmail過濾器可以很好地幫助你,將「命令」電子郵件放在標籤上,而腳本只是刪除標籤(可能會設置另一個標籤)。要點是,看它有多大差異。

另外,我認爲如果您可以將所有功能保留在同一個腳本項目中,則會更容易。可能只是在不同的文件。因爲調用不同的腳本更復雜。

反正,他就是我想要啓動它:

//set a time-driven trigger to run this function on the desired frequency 
function monitorEmails() { 
    var label = GmailApp.getUserLabelByName('command'); 
    var doneLabel = GmailApp.getUserLabelByName('executed'); 
    var cmds = label.getThreads(); 
    var max = Math.min(cmds.length,5); 
    for(var i = 0; i < max; ++i) { 
    var email = cmds[i].getMessages()[0]; 
    var functionName = email.getBody(); 
    //you may need to do extra parsing here, depending on your usage 

    var ret = undefined; 
    try { 
     ret = this[functionName](); 
    } catch(err) { 
     ret = err; 
    } 
    //replying the function return value to the email 
    //this may make sense or not 
    if(ret !== undefined) 
     email.reply(ret); 
    cmds[i].removeLabel(label).addLabel(doneLabel); 
    } 
} 

PS:我還沒有測試此代碼

+4

現在有辦法在收到電子郵件時觸發腳本(而不是設置一個計時器)嗎? – Trevor

+0

@threed不是我所知的 –

+0

那麼那就沒用了。沒有像GMail上的procmail? – Michael

6

您可以創建一個谷歌的應用程序,將被髮送到接收到的電子郵件被觸發該應用的特殊地址。該郵件將轉換爲您的應用收到的HTTP POST。

更多細節在這裏: https://developers.google.com/appengine/docs/python/mail/receivingmail

我沒有帶這個還沒試過自己,但在未來數日內將這樣做。

+3

問題是詢問Google Apps腳本中的解決方案,而不是AppEngine。 –

+3

啊,這是由於有太多不同產品的名稱相似,重疊和混淆不清......爲盡力提供幫助而表示歉意。 順便說一句,我自己的實現是成功的。 –

+0

@EdRandall我知道這已經有一段時間了,但你介意分享你實現的基本邏輯嗎?我發現自己需要類似的東西,不得不通過電子郵件觸發一個python腳本(python腳本現在駐留在EC2實例上,但我可以移動到AppENgine,這是同樣的事情嗎?)謝謝 – newyuppie

-1

有兩種方法。首先,您可以使用Google pub/sub並處理AppScrit端點中的通知。第二種方法是在您的AppScript代碼an example here中使用googleapis npm包。希望能幫助到你。

這些步驟如下:

  • 由上https://console.cloud.google.com/cloudpubsub/topicList?project=testmabs事情的一個項目?
  • 做了發佈 - 訂閱話題
  • 做出訂閱網絡掛接網址
  • 還說,網址我自己的網站,我猜?我想我必須做DNS事情來確認我是否擁有它,並且錯誤是超級模糊的,以便弄清楚這是我必須做的,當試圖添加訂閱時
  • 增加了對「gmail-api」主題的權限[email protected]「作爲發佈者(我還添加了.... apps.googleusercontent.com和[email protected],但我不認爲我需要它們)
  • 創建oauth客戶端信息並下載它在谷歌控制檯的憑據部分。 (oauthtrash。json)
+2

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/16436033) –

+0

謝謝,我會糾正我的答案 –

相關問題