我希望我不必重新發布這個問題,但是我的老闆把這個問題推到了最高優先級,我需要幫助來解決這個問題。我正嘗試使用GAS腳本從我的GSuite域上的地址(目前,我正在測試我的地址)中提取發佈/訂閱通知。基本上,我要完成的任務是在所有這些材料中描述:需要幫助爲SpreadsheetApp(Google Appscript)創建GMAIL Pub/Sub Notification服務
1)Great Github Project from Spencer Easton(Instructional Video)
我創建在我的Google雲端硬盤工作域中的參考文獻1中記錄的GAS項目中添加了PUB/SUB API和庫,連接到具有Gmail服務帳戶權限的Pub/Sub Cloud服務,並創建了必要的主題/訂閱。我運行了enrollEmail並取回了一個有效的history_Id,我可以使用API瀏覽器查找並確認該文件可以寫入Drive上指定的電子表格。但doPost方法決不會像我希望的那樣觸發事件在電子表格上書寫。有人可以幫我找出爲什麼這段代碼不適用於我的域名嗎?我沒有明確的錯誤消息,因爲我試圖運行郵政服務。
這裏是我的代碼:
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 Cloud帳戶的帳單。有誰知道我是否需要爲此功能計費?