无效的 topicName 不匹配
Invalid topicName does not match
我整天都在试图解决这个问题,但我找不到错误的地方。我正在制作一个程序来检测我何时在我的 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()我放到了一个web: 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-72285619869091378116913905"而且我没有在其他地方看到它
我也给 gmail-api-push@system.gserviceaccount.com 权限
我认为问题出在项目的 ID 上,所以我检查了那部分,这是我发现的:
我也尝试更改主题名称:
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).
但是我确定我已经创建了该资源,因为我在这里创建了:
最后我用这个 YouTube 视频来指导我 youtube.com/watch?v=wjHp9_NAEJo
监视功能documentation对项目有这样的说法:
Note that the "my-project-identifier" portion must exactly match your Google developer project id (the one executing this watch request).
sys-72285619869091378116913905
大概是 Apps 脚本是 运行 的项目的项目 ID。这是 "default Cloud Project" 描述的 here。这显然不匹配 proyecgmailyou
.
要解决此问题,您可以将 Apps 脚本的 Cloud 项目更改为 "standard" Cloud Platform 项目 following steps:
- 打开脚本的脚本编辑器
- 转到"Resources > Cloud Platform Project..."
- 在此处输入您的云项目编号(即 729073306366)
授权将丢失,但之后 Apps 脚本将 运行 在您的云项目中,因此可以使用该项目中的主题。
new steps 将 Apps 脚本的云项目更改为“标准”云平台项目(如果您使用的是“新编辑器”):
- 打开您要替换其 GCP 项目的脚本。
- 在左侧,单击“项目设置”设置。
- 在 Google 云平台 (GCP) 项目下,单击更改项目。
- 输入新项目编号并点击设置项目。
我整天都在试图解决这个问题,但我找不到错误的地方。我正在制作一个程序来检测我何时在我的 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()我放到了一个web: 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-72285619869091378116913905"而且我没有在其他地方看到它
我也给 gmail-api-push@system.gserviceaccount.com 权限
我认为问题出在项目的 ID 上,所以我检查了那部分,这是我发现的:
我也尝试更改主题名称:
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).
但是我确定我已经创建了该资源,因为我在这里创建了:
最后我用这个 YouTube 视频来指导我 youtube.com/watch?v=wjHp9_NAEJo
监视功能documentation对项目有这样的说法:
Note that the "my-project-identifier" portion must exactly match your Google developer project id (the one executing this watch request).
sys-72285619869091378116913905
大概是 Apps 脚本是 运行 的项目的项目 ID。这是 "default Cloud Project" 描述的 here。这显然不匹配 proyecgmailyou
.
要解决此问题,您可以将 Apps 脚本的 Cloud 项目更改为 "standard" Cloud Platform 项目 following steps:
- 打开脚本的脚本编辑器
- 转到"Resources > Cloud Platform Project..."
- 在此处输入您的云项目编号(即 729073306366)
授权将丢失,但之后 Apps 脚本将 运行 在您的云项目中,因此可以使用该项目中的主题。
new steps 将 Apps 脚本的云项目更改为“标准”云平台项目(如果您使用的是“新编辑器”):
- 打开您要替换其 GCP 项目的脚本。
- 在左侧,单击“项目设置”设置。
- 在 Google 云平台 (GCP) 项目下,单击更改项目。
- 输入新项目编号并点击设置项目。