从 Gsuite 中的共享/委派邮箱获取收件箱信息

问题描述 投票:0回答:3

我们在工作中使用 Gsuite Enterprise。我正在使用基本脚本从我自己的邮箱获取信息,没有任何问题。但我想从我被委托的几个共享邮箱中提取信息。例如 [电子邮件受保护]。但我找不到任何与此相关的信息,以及是否可以使用应用程序脚本到达委托邮箱。 我一直在使用应用程序脚本从委托邮箱发送电子邮件,没有任何问题。

希望有人可以告诉我更多有关此的信息。

提前致谢。

google-apps-script gmail google-workspace
3个回答
1
投票

为了在 Apps 脚本中使用服务帐户,您必须执行以下操作:

1.构建 OAuth 服务:

将指定库添加到脚本后,您必须执行此操作才能使用委派凭据构建 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:

OAuth 服务构建完成后,您可以使用它来检索访问令牌,通过该令牌您可以访问所需的资源。当然,

GmailApp 服务

高级 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)); } }

注:

我在这里假设您已经
    创建了一个服务帐户
  • 授予了域范围的权限,并且您的问题只是在Apps脚本中使用它。
  • Gmail API 参考
  • 中,如果您需要有关如何发出 HTTP 请求的信息(访问的 URL、HTTP 方法),请检查与您要使用的 API 方法相对应的 HTTP request
    Parameters
    Request body
    部分、请求参数等)。
    
    
  • 参考:

    适用于应用程序脚本的 OAuth2
  • 应用程序脚本 OAuth2 > GoogleServiceAccount.gs

0
投票

除了 @ZigMandel 所说的之外:据我所知,除非这是 google 域或 google for work 帐户,否则您无法将服务帐户与 gmail 一起使用。您需要使用Oauth2。答案由@DalmTo

提供


0
投票
Google Cloud Community

Google Issue Tracker 上提出了功能请求,以允许从委派邮箱访问 Gmail Apps 脚本插件。 点赞越多,谷歌认真对待这个问题的机会就越大;)。

© www.soinside.com 2019 - 2024. All rights reserved.