为绑定到Google表单的脚​​本委派域范围的权限

时间:2016-09-21 20:58:33

标签: google-apps-script google-oauth gmail-api google-form google-admin-sdk

我想获取并为公司域中的用户设置自动转发详细信息。我的管理员让我成为委派管理员,以便我可以使用AdminDirectory.Users获取用户数据。 但是,当我尝试使用用户ID为用户获取自动转发/标签/过滤器数据时,会引发以下错误:

  

代表团拒绝访问some.user@domain.com

这是引发错误的行:

var labels = Gmail.Users.Labels.list(user.id);

似乎可以通过将域范围的权限委派给Service Account来执行此操作。但是,当我尝试此链接中突出显示的步骤:Link时,页面要求我选择一个项目。

这个脚本在这些项目中没有特色,我不确定是不是因为它是bound to Google Forms

有关如何为此脚本提供相同的域范围权限特权的任何建议吗?

请帮助!!

2 个答案:

答案 0 :(得分:1)

为Google脚本创建服务帐户:

  1. 从Google Script IDE开始,然后从菜单中选择资源>开发者控制台项目......
  2. 点击对话框顶部附近标有“此脚本当前与项目关联:”的链接。
  3. 点击左侧导航栏中的凭据,然后点击创建凭据>服务帐户密钥按照流程创建服务帐户 - 对于角色,选择项目>服务帐户参与者
  4. 然后,您可以使用Google Script中下载的.json文件中的私钥和客户端ID。
  5. 注意:您需要:

    1. 获取G Suite域管理员,使用您想要的范围设置您的client_id。 https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
    2. 通过UrlFetch使用Gmail API,因为您无法使Gmail高级服务使用其他OAuth令牌。您可以使用OAuth2库并遵循此示例:https://github.com/googlesamples/apps-script-oauth2/blob/master/samples/GoogleServiceAccount.gs

答案 1 :(得分:-1)

首先,请确保为您提供的链接中说明的服务帐户启用了域范围的委派。由于您创建的服务帐户需要被授予访问您要访问的Google Apps域的用户数据的权限。

同样在您的Apps脚本代码中,转到资源 - > 推进Google服务,请务必启用您在此处创建的应用程序使用的所有Google服务。

有关更多信息,请查看以下主题: