2012-05-02 84 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

谢谢,我会纠正我的答案 –

相关问题