//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:我还没有测试过这段代码
6
您可以创建一个谷歌应用程序,该应用程序将由发送到该应用程序的特殊地址的传入电子邮件消息触发 . 邮件将转换为您的应用程序收到的HTTP POST .
3 回答
您可以在Apps脚本user guide和tutorials中找到脚本示例 . 您也可以在forum上搜索相关讨论 . 但是我完全不适合你,所有代码都在那里,但不是在一个脚本上 .
有人可能会编写这样的脚本并且从未发布过它 . 因为它有点简单,每个人的用法都不同 . 例如,您如何计划标记您的电子邮件(您已经阅读,执行过的电子邮件等)?使用gmail过滤器来帮助你,将“命令”电子邮件立即放入标签中,并且脚本只需删除标签(并可能设置另一个标签),这可能会很不错 . 重点是,看看它有多大差异 .
另外,我认为如果你可以将所有功能保存在同一个脚本项目中会更容易 . 可能只是在不同的文件上 . 调用不同的脚本更复杂 .
无论如何,他是我如何开始的:
ps:我还没有测试过这段代码
您可以创建一个谷歌应用程序,该应用程序将由发送到该应用程序的特殊地址的传入电子邮件消息触发 . 邮件将转换为您的应用程序收到的HTTP POST .
更多细节:https://developers.google.com/appengine/docs/python/mail/receivingmail
我自己还没有试过这个,但是接下来的几天就会这样做 .
有两种方法 . 首先,您可以使用Google pub / sub并在AppScrit endpoints 处理incomming通知 . 第二种是在AppScript代码an example here中使用googleapis npm包 . 希望能帮助到你 .
这些是步骤:
在https://console.cloud.google.com/cloudpubsub/topicList?project=testmabs做了一个项目?
发了一个pubsub主题
订阅了webhook网址
在我拥有的网站上添加了网址,我猜?我想我必须做DNS事情以确认我拥有它,并且错误是超级模糊的,以确定这是我必须做的,当试图添加订阅时
为发布者添加了"gmail-api-push@system.gserviceaccount.com"主题的权限(我还添加了.... apps.googleusercontent.com和youtrackapiuser.caps@gmail.com但我认为我不需要它们)
创建了oauth客户端信息,并将其下载到Google控制台的凭据部分 . (oauthtrash.json)