无效的topicName不匹配

时间:2019-05-21 20:08:57

标签: google-apps-script google-cloud-platform gmail-api watch google-cloud-pubsub

我一直在努力解决这个问题,但是我找不到错误所在。我正在编写一个程序,以检测我何时通过gmail接收到邮件并将其写在Google电子表格中。我正在使用Gmail API和Google Apps脚本。这是我的代码:

gs代码是:

function doPost(e) {
  var message = JSON.parse(e.postData.getDataAsString()).message
  var data = Utilities.newBlob(Utilies.base64Decode(message.data)).getDataAsString()[0];
  var ss = SpreadsheetApp.openById('1b8s5PLItCsmk8l1q0T1KHYOzjW7iDv4sRXSFvAxVFbQ').getSheets()[0];
  ss.appendRow([new Date(), message.message_id,data]);
  return 200;
}

function capturemail(){

  var WatchRes = Gmail.newWatchRequest();
  WatchRes.labelIds = ["INBOX"];
  //WatchRes.labelFilterAction = "include";
  WatchRes.topicName = "projects/proyecgmailyou/topics/mailsuc";

  var response = Gmail.Users.watch(WatchRes,"rjdelrio@uc.cl");

  Logger.log(response);

}

我在网络中放置的函数doPost():https://script.google.com/a/uc.cl/macros/s/AKfycby8gOrWrMDkaAlgNdXNHl2J424Hvv0yu2CKKhJQW41Ka3Xa55g/exec

然后我尝试运行功能capturemail但出现下一个错误:

The API call to gmail.users.watch failed with the error: Invalid topicName does not match projects/sys-72285619869091378116913905/topics/* 

而且很奇怪,因为我从不使用这个名称“ sys-72285619869099097811169905”,而在其他地方却看不到

我也将许可授予gmail-api-push@system.gserviceaccount.com enter image description here

我认为问题是项目的ID,所以我查看了该部分,这就是我发现的内容: enter image description here

我还尝试更改以下主题的名称:

projects/sys-72285619869091378116913905/topics/mailsuc

但出现另一个错误:

The API call to gmail.users.watch failed with the error: Error sending test message to Cloud PubSub projects/sys-72285619869091378116913905/topics/mailsuc : Resource not found (resource=mailsuc).

但是我确定我已经创建了该资源,因为我在这里做了

enter image description here

最后我用youtube的视频来指导我youtube.com/watch?v=wjHp9_NAEJo

2 个答案:

答案 0 :(得分:2)

监视功能documentation对此项目有这样的说明:

  

请注意,“ my-project-identifier”部分必须与您的Google Developer项目ID(执行此监视请求的ID)完全匹配。

z2大概是运行Apps脚本的项目的项目ID。如here所述,这是一个“默认的Cloud Project”。这显然与z1 == z2不匹配。

要解决此问题,您可以使用following steps将Apps脚本的Cloud Project更改为“标准” Cloud Platform项目:

  1. 打开脚本的脚本编辑器
  2. 转到“资源> Cloud Platform项目...”
  3. 在此处输入您的云项目编号(即729073306366)

授权将丢失,但是此后,Apps脚本将在您的云项目中运行,因此可以使用该项目中的主题。

答案 1 :(得分:1)

new steps 可将您的 Apps 脚本的云项目更改为“标准”云平台项目(如果您使用的是“新编辑器”):

  1. 打开要替换其 GCP 项目的脚本。
  2. 在左侧,点击项目设置设置。
  3. 在 Google Cloud Platform (GCP) 项目下,点击更改项目。
  4. 输入新项目编号,然后点击设置项目。