【问题标题】:Trigger Google Apps Script by email通过电子邮件触发 Google Apps 脚本
【发布时间】:2012-05-02 19:34:14
【问题描述】:

我正在寻找在 GoogleAppsForBusiness 域中运行的恶魔脚本可以解析传入电子邮件的模式示例。一些消息将包含对不同 GAScript 的调用,例如,可以更改特定文档的 ACL 设置。

我假设其他人已经实现了这种模式,但不确定我如何寻找示例。

谢谢

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    您可以在 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:我没有测试过这段代码

    【讨论】:

    • 现在有没有办法在收到电子邮件时触发脚本(而不仅仅是设置计时器)?
    • @threed 我不知道
    • 那没用。没有像 GMail 上的 procmail 一样的东西?
    • 这里是 gmail 文档的直接链接:developers.google.com/apps-script/reference/gmail
    • 好主意。我现在将对其进行测试。
    【解决方案2】:

    您可以创建一个 google 应用程序,该应用程序将由发送到应用程序特殊地址的传入电子邮件触发。该消息将转换为您的应用程序接收的 HTTP POST。

    更多细节在这里: https://developers.google.com/appengine/docs/python/mail/receivingmail

    我自己还没有尝试过,但会在接下来的几天内尝试。

    【讨论】:

    • 问题是关于 Google Apps Script 中的解决方案,而不是 AppEngine。
    • 嗯,这是因为有太多不同的产品名称相似,重叠和混乱......抱歉尽我所能提供帮助。顺便说一句,我自己的实现是成功的。
    • @EdRandall 我知道已经有一段时间了,但您介意分享您实现的基本逻辑吗?我发现自己需要类似的东西,希望通过电子邮件触发 python 脚本(python 脚本现在驻留在 EC2 实例上,但我可以很好地转移到 AppENgine,是一样的吗?)谢谢
    • @newyuppie 当然,我的应用程序的源代码在bitbucket.org/edrandall/sdn-email app.yaml 配置文件“handlers”指令指向 main.app(即 main.py),工作完成在 sdn/sdn_email.py 中
    【解决方案3】:

    有两种方法。首先,您可以使用 Google pub/sub 并在您的 AppScrit 端点中处理传入通知。第二种是在你的 AppScript 代码an example here 中使用 googleapis npm 包。希望对您有所帮助。

    这些是步骤:

    • https://console.cloud.google.com/cloudpubsub/topicList?project=testmabs thing 上做了一个项目?
    • 创建了一个 pubsub 主题
    • 订阅了 webhook url
    • 我猜是把那个网址添加到我拥有的网站上吧?我想我必须做 DNS 的事情来确认我拥有它,而且在尝试添加订阅时,这个错误非常模糊,无法确定这是我必须做的事情
    • 添加了“gmail-api-push@system.gserviceaccount.com”作为发布者的主题权限(我还添加了 ....apps.googleusercontent.com 和 youtrackapiuser.caps@gmail.com 但我不认为我需要他们)
    • 创建了 oauth 客户端信息并将其下载到 google 控制台的凭据部分。 (oauthtrash.json)

    【讨论】:

      猜你喜欢
      • 2013-08-15
      • 1970-01-01
      • 2020-12-15
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多