【发布时间】:2017-03-24 23:49:53
【问题描述】:
我希望我不必重新发布这个问题,但我的老板将这个问题推到了最高优先级,我需要帮助来解决这个问题。我正在尝试使用 GAS 脚本从我的 GSuite 域上的地址中提取发布/订阅通知(目前,我正在测试我的)。基本上,我正在尝试完成所有这些材料中描述的内容:
1)Great Github Project from Spencer Easton(Instructional Video)
我在 Google Drive 中的工作域上创建了参考 1 中记录的 GAS 项目,作为草稿发布到 chrome 商店,添加了 PUB/SUB API 和库,连接到具有 Gmail 服务帐户权限的 Pub/Sub Cloud 服务,并创建了必要的主题/订阅。我运行了enrollEmail 并取回了一个有效的history_Id,我可以使用API 资源管理器查找它,并确认该文件可以写入Drive 上的指定电子表格。但是 doPost 方法永远不会像我希望的那样触发要在电子表格上写入的事件。有人可以帮我找出为什么此代码不适用于我的域吗?我没有明确的错误消息,因为我正在尝试运行 post 服务。
这是我的代码:
function doPost(e) {
var ss = SpreadsheetApp.open(DriveApp.getFilesByName('Episode_Log').next()).getSheets()[0];
ss.appendRow(['Push was recieved'+ new Date()]);
try{
var message = JSON.parse(e.postData.getDataAsString()).message;
var data = Utilities.newBlob(Utilities.base64Decode(message.data)).getDataAsString();
ss.appendRow([new Date(), message.message_id, data]);
}
catch(e){ss.appendRow(['failure', e]); }
return 200;
}
function enrollEmail() {
var EMAIL = Session.getActiveUser().toString();
var watchRes = Gmail.newWatchRequest();
watchRes.labelIds = ["INBOX"];
watchRes.labelFilterAction = 'include';
watchRes.topicName = 'projects/project-id-3596301251382091354/topics/eWarning';
var response = Gmail.Users.watch(watchRes, EMAIL);
Logger.log(response);
var ss = SpreadsheetApp.open(DriveApp.getFilesByName('Episode_Log').next()).getSheets()[0];
ss.appendRow(['Manual Test']); //This works
}
function checkHistory(){
var EMAIL = Session.getActiveUser().toString();
Logger.log(Gmail.Users.History.list(EMAIL, {startHistoryId: '****'})); //works with a valid ID
}
非常感谢你们!
*PS 我没有在谷歌云账户上明确启用计费。有谁知道我是否需要为此功能付费?
【问题讨论】:
标签: google-apps-script google-cloud-pubsub