首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Get中的共享/委托邮箱获取inboxinfo

从Get中的共享/委托邮箱获取inboxinfo
EN

Stack Overflow用户
提问于 2020-07-05 16:51:13
回答 3查看 1.2K关注 0票数 1

我们正在工作中使用Gsuite /Piazzaweb。我使用基本脚本从我自己的邮箱获取信息,没有问题。但是,我想从几个共享邮箱中提取信息,而这些邮箱都是我被委派的。例如,billing@mycompany.com。但是我找不到关于这个的任何信息,如果可以用App访问一个委托邮箱的话。我一直用app脚本从委托邮箱发送电子邮件,没有任何问题。

希望有人能告诉我更多关于这件事的事。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2020-07-06 12:58:20

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

1.构建OAuth服务:

一旦您将指定的库已添加到您的脚本,就必须这样做,以便使用委派的凭据构建OAuth服务:

代码语言:javascript
复制
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请求。

我不确定您到底想要做什么,确切的请求将取决于此,但是,例如,如果您想要从模拟用户那里获得列出消息,您可以这样做:

代码语言:javascript
复制
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));
  }
}

注意:

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

参考资料:

票数 1
EN

Stack Overflow用户

发布于 2020-07-05 18:38:45

您不能使用应用程序脚本的委托,因为应用程序脚本不支持使用服务帐户。您需要创建一个oauth2流并让用户授权它。@Zig Mandel提供的答复

除了@ZigMandel说的:除非这是谷歌域名或谷歌的工作帐户,我知道你不能使用gmail的服务帐户。您需要使用Oauth2。@DalmTo提供的答复

票数 0
EN

Stack Overflow用户

发布于 2022-02-02 17:14:17

我不知道这是否能解决这个问题,但是已经在Google云社区谷歌问题跟踪器上放置了一个特性请求,以允许从委托邮箱访问Gmail脚本插件。谷歌越有可能认真看待这个问题;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62743648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档