我们在工作中使用 Gsuite Enterprise。我正在使用基本脚本从我自己的邮箱获取信息,没有任何问题。但我想从我被委托的几个共享邮箱中提取信息。例如 [电子邮件受保护]。但我找不到任何与此相关的信息,以及是否可以使用应用程序脚本到达委托邮箱。 我一直在使用应用程序脚本从委托邮箱发送电子邮件,没有任何问题。
希望有人可以告诉我更多有关此的信息。
提前致谢。
为了在 Apps 脚本中使用服务帐户,您必须执行以下操作:
将指定库添加到脚本后,您必须执行此操作才能使用委派凭据构建 OAuth 服务,:
const PRIVATE_KEY = '-----BEGIN PRIVATE KEY-----\nxxxxxxxxxxxxxxxxxxxxx\n-----END PRIVATE KEY-----\n';
const CLIENT_EMAIL = 'xxxxxxxxxxxxxxxxxxxxx.iam.gserviceaccount.com'; // Service account email
const USER_EMAIL = 'email_address_to_impersonate'; // Account to impersonate
const SCOPE = 'https://www.googleapis.com/auth/gmail.readonly' // Change according to your preferences
function getGmailService() {
return OAuth2.createService('Gmail: ' + USER_EMAIL)
.setTokenUrl('https://oauth2.googleapis.com/token')
.setPrivateKey(PRIVATE_KEY)
.setIssuer(CLIENT_EMAIL)
.setSubject(USER_EMAIL)
.setPropertyStore(PropertiesService.getScriptProperties())
.setScope(SCOPE);
}
其中
PRIVATE_KEY
指在服务帐户 JSON 凭证中找到的密钥,
CLIENT_EMAIL
是服务帐户电子邮件,USER_EMAIL
指您要访问其 INBOX
的电子邮件地址。需要注意的是,SCOPE
应该是您在授权时指定的范围之一。
2.访问API: 和 高级 Gmail 服务 在这里不会使用,因为您必须使用刚刚构建的服务访问 API。因此,访问 API 的方式将通过 UrlFetch
发出相应的 HTTP 请求。
,您可以这样做:
function readInbox() {
var service = getGmailService();
console.log(service.getAccessToken());
if (service.hasAccess()) {
var url = 'https://www.googleapis.com/gmail/v1/users/me/messages';
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
}
});
var result = JSON.parse(response.getContentText());
console.log(JSON.stringify(result, null, 2));
}
}
注:
HTTP request
、Parameters
和 Request body
部分、请求参数等)。
除了 @ZigMandel 所说的之外:据我所知,除非这是 google 域或 google for work 帐户,否则您无法将服务帐户与 gmail 一起使用。您需要使用Oauth2。答案由@DalmTo
提供
和 Google Issue Tracker 上提出了功能请求,以允许从委派邮箱访问 Gmail Apps 脚本插件。 点赞越多,谷歌认真对待这个问题的机会就越大;)。