编辑器插件的授权范围

用户必须向访问其数据或代表用户执行操作的插件和其他应用授权。当用户首次运行插件时,该插件界面会显示授权提示,以启动授权流程。

在此流程中,提示会告知用户应用需要权限执行的操作。例如,插件可能想要读取用户的电子邮件或在其日历中创建活动的权限。该插件的脚本项目将这些权限定义为 OAuth 范围

您可以使用网址字符串在清单中声明范围。在授权流程中,Apps 脚本会向用户显示简单易懂的范围说明。例如,您的插件可能会使用“读取当前文档”范围,该范围在您的清单中以 https://www.googleapis.com/auth/documents.currentonly 的形式编写。在授权流程中,具有此范围的插件会要求用户允许该插件执行以下操作:查看和管理其中已安装此应用的文档

查看范围

通过执行以下操作,您可以查看脚本项目当前所需的范围:

  1. 打开脚本项目。
  2. 点击左侧的概览图标
  3. 查看“项目 OAuth 范围”下的范围。

您还可以在项目清单的 oauthScopes 字段下查看脚本项目的当前范围,但前提是您已明确设置这些范围。

设置显式范围

Apps 脚本会扫描脚本中需要哪些作用域的函数调用,从而自动确定脚本所需的作用域。对于大多数脚本,这已经足够并可以节省时间,但对于已发布的插件,您应该对作用域进行更直接的控制。

例如,默认情况下,Apps 脚本可能会为插件脚本项目提供非常宽松的范围 https://mail.google.com。当用户向具有此范围的脚本项目授权时,该项目将获得对用户 Gmail 帐号的完整访问权限。对于已发布的插件,您必须将此范围替换为更受限的集合,以覆盖插件的需求,而不能超出此范围。

您可以通过修改脚本项目的清单文件来明确设置脚本项目使用的范围。清单字段 oauthScopes 是该插件使用的所有范围的数组。如需设置项目的范围,请执行以下操作:

  1. 查看您的插件目前使用的范围。确定需要进行哪些更改,例如使用更小的范围。
  2. 打开插件的清单文件
  3. 找到标记为 oauthScopes 的顶级字段。如果该文件不存在,您可以添加该文件。
  4. oauthScopes 字段指定字符串数组。如需设置项目使用的范围,请将此数组的内容替换为要使用的范围。 例如,对于扩展 Google 表格的编辑器插件,您可能拥有以下配置:

    {
      ...
      "oauthScopes": [
        "https://www.googleapis.com/auth/script.container.ui",
        "https://www.googleapis.com/auth/spreadsheets.currentonly"
      ],
      ...
    }
    

  5. 保存对清单文件所做的更改。

OAuth 验证

如果使用某些敏感的 OAuth 范围,您的插件可能需要先完成 OAuth 客户端验证,然后才能发布。如需了解详情,请参阅以下指南:

受限范围

某些范围会受限,并受到有助于保护用户数据的额外规则的约束。如果您打算发布使用一个或多个受限范围的 Gmail 或编辑器插件,则插件必须符合所有指定限制才能发布。

请先查看受限范围的完整列表,然后再尝试发布。如果您的插件使用了其中任一范围,则在发布之前,您必须遵守针对特定 API 范围的附加要求

编辑器插件范围

构建编辑器插件时,所需的范围取决于 Apps 脚本服务和插件代码所使用的方法。例如,表格插件可能需要 https://www.googleapis.com/auth/spreadsheets.readonly 范围才能读取其他 Google 表格中的信息。

在您将代码添加到脚本项目时,Apps 脚本会自动确定您使用的服务所需的范围。对于编辑器插件,您通常可以仅依赖此自动范围集合,而无需自行确定并明确设置范围。

如果您未明确设置范围,并且编辑器插件只对打开的编辑器文件执行读取或写入操作,请在某个脚本项目文件中添加以下注释:

  /**
   * @OnlyCurrentDoc
   */

此注释会告知 Apps 脚本将其设置为 currentonly 的编辑器文件范围缩小。例如,如果您将此评论添加到某个 Google 表格插件脚本项目文件中,则表示该插件只需操作当前打开的表格的权限,而不需要用户在 Google 云端硬盘中拥有的任何其他表格执行操作。反之,如果您的 Google 表格插件需要在用户当前未打开的表格中读取或写入数据,则不应使用此注释。