Google Apps脚本用于检索其他用户' Gmail标签

时间:2017-05-31 20:07:29

标签: google-apps-script google-cloud-platform admin google-apps gmail-api

作为超级管理员,我尝试使用以下代码列出测试用户的标签,但是没有成功:https://developers.google.com/apps-script/advanced/gmail

function listLabelInfo() {
  var response =
    Gmail.Users.Labels.list('testuser@domain.com');
  for (var i = 0; i < response.labels.length; i++) {
    var label = response.labels[i];
    Logger.log(JSON.stringify(label));
  }
}

我得到的错误是Delegation denied for myaccount@domain.com (line 2, file "Code")

根据页面上的说明,我执行了以下操作:

  1. 转到资源&gt;打开 Gmail API 高级Google 服务....
  2. 通过转到资源&gt;从此项目的API控制台启用 Gmail API 云平台 项目,然后点击我的项目名称 - 项目-ID-0123456789012345678
  3. 创建服务帐户并选中已启用G的复选框 套件域范围的授权 在域的管理API客户端访问控制台上,针对在服务帐户中创建的客户端ID 输入了范围https://www.googleapis.com/auth/gmail.labels上面的步骤#3。
  4. 我仍然遇到同样的错误。如果我使用'me代替'testuser@domain.com',则会显示我的所有标签。

    我在这里缺少什么?

    非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您无法通过Apps脚本模拟用户。您无法在应用脚本中使用服务帐户。脚本始终以您的身份运行,而不是服务帐户。

当您创建服务帐户并启用域范围委派时,您必须使用库客户端(java,php,python等)中的服务帐户。

欢呼声

答案 1 :(得分:0)

如果您不必使用应用程序脚本自行解决此问题。每个GSuite管理员都有一个“必备”工具来管理与用户有关的任何事情。 该工具称为GAM,这是Github存储库URL:https://github.com/jay0lee/GAM/wiki

基本上,GAM是一个命令行工具,它使管理员可以管理其G Suite帐户的许多方面,包括组,日历等。