Google Cloud 项目

每个 Apps 脚本项目都使用 Google Cloud 管理授权、高级服务和其他详细信息。为了配置和管理这些设置,每个 Apps 脚本项目都有一个关联的 Google Cloud 项目。您的脚本项目可以使用 Apps 脚本自动创建的默认项目,也可以使用您自己创建的标准项目。通常,默认项目适合日常或简单的脚本,但对于任何复杂、商业质量或打算发布的应用,您都应该使用标准项目。

您可以随时从默认项目切换到标准项目,但无法切换回默认项目。最好选择脚本在开发初期使用的 Cloud 项目。稍后切换可能会导致复杂情况,例如要求用户重新授权。

默认 Cloud 项目

当您创建 Apps 脚本项目时,Apps 脚本会创建一个在后台运行的默认 Cloud 项目。

  • 对于大多数脚本,您永远无需查看或调整此默认项目。Apps 脚本会处理与 Google Cloud 的必要交互。例如,如果您在 Apps 脚本编辑器中激活了高级服务,则 Apps 脚本会在您保存脚本项目时激活默认 Cloud 项目中的高级服务。
  • 对于某些脚本,您需要与 Google Cloud 控制台进行交互。在这些情况下,您的脚本必须改用标准 Cloud 项目。例如,如需在 Google Cloud 控制台中查看 Google Cloud 日志,您的脚本必须使用标准项目。

默认情况下,Cloud 项目的 Identity and Access Management (IAM) 政策包含一个条目,即充当默认项目的所有者的 Google 服务帐号。Google 服务帐号为 appsdev-apps-dev-script-auth@system.gserviceaccount.com

查看或更新默认 Cloud 项目

大多数用户无法在 Google Cloud 控制台中直接找到、查看或修改默认项目。如果您是管理员,请参阅查看默认 Google Cloud 项目

如果您的脚本项目是在 2019 年 4 月 8 日之前创建的,您可以使用可在 Google Cloud 控制台中访问的默认项目。如需访问默认项目,请转到脚本项目的设置,然后点击项目编号。

删除默认 Cloud 项目

如果您是管理员,可以像删除标准 Cloud 项目一样删除默认 Cloud 项目。请参阅删除 Apps 脚本 Cloud 项目

如果您不是管理员,则无法删除默认项目。不过,在以下情况下,Apps 脚本会删除默认项目:

  • 如果您删除脚本项目或将其切换为使用标准项目,Apps 脚本将删除附加到脚本的默认项目及其包含的任何设置或信息。
  • 如果脚本运行时间超过 180 天或更长时间,则 Apps 脚本会删除关联的默认项目。如果脚本在 Apps 脚本删除默认项目后运行,则 Apps 脚本会为脚本创建一个项目。

标准 Cloud 项目

对于大多数 Cloud Shell 项目而言,默认 Cloud 项目是最佳选择,除非您需要手动配置项目。在这些情况下,您必须将脚本项目切换为使用标准项目

以下部分介绍了 Apps 脚本何时需要标准项目、此类项目的属性以及这些项目的常见任务。您只能对标准项目执行以下任务。

当 Apps 脚本需要标准 Cloud 项目时

在以下情况下,您必须使用标准项目:

标准 Cloud 项目属性

标准项目具有以下属性:

  • 您可以直接从 Google Cloud 控制台访问项目的所有 Google Cloud 设置。这样,您就可以激活 API、调整授权凭据以及配置其他详细信息。
  • 当您删除某个脚本项目或切换到其他标准项目后,原始标准项目仍会保留,并且可以重复使用。
  • 在脚本项目中激活高级服务时,必须手动激活标准项目中的相应 API。
  • 多个脚本项目和其他应用可以共享同一个标准项目。如果您打算将脚本项目作为插件发布到 Google Workspace Marketplace,它必须拥有自己的标准项目。已发布的应用无法与其他应用共享 Cloud 项目。
  • 如果要使用 Apps Script API 的 scripts.run 方法在其他应用中执行脚本项目中,则脚本项目和调用方应用必须共享同一标准项目。
  • 当 Apps 脚本要求用户授权使用标准项目的脚本时,Cloud 项目名称(而不是脚本项目名称)将用于识别脚本。因此,请务必设置适当的 Cloud 项目名称。

访问标准 Cloud 项目

如需访问与脚本项目关联的标准项目,请执行以下操作:

  1. 打开 Apps 脚本项目。
  2. 点击左侧的 Project Settings 图标
  3. Google Cloud Platform (GCP) 项目下,点击项目编号。

您还可以直接在 Google Cloud 控制台的管理资源页面上找到标准项目。

在标准 Cloud 项目中激活 API

通常情况下,Apps 脚本应用需要访问其他 Google API。为此,您必须在相应的 Cloud 项目中激活该 API。通过执行以下操作来激活 API:

  1. 打开 Cloud 项目
  2. 依次点击“菜单” > API 和服务
  3. 点击启用 API 和服务
  4. 在搜索框中输入您要启用的 API,然后按 Enter 键。
  5. 在搜索结果中点击该 API,然后点击启用以为此 Cloud 项目激活此 API。

系统可能会提示您接受 Google APIGoogle Cloud 的服务条款。在接受之前,请仔细阅读《服务条款》。

根据具体应用,您可能还需要通过在 API 和服务信息中心内选择该 API 来配置该 API。

确定标准 Cloud 项目的 ID 和数量

所有 Cloud 项目都有项目名称、项目 ID 和项目编号。 有时,您必须拥有这些标识符才能配置服务或完成其他任务。

如需确定标准项目的 ID 和编号,请执行以下操作:

  1. 打开 Cloud 项目
  2. 在右上角,依次点击“更多”图标 > 项目设置
  3. 在随即显示的设置面板中,查看项目名称项目 ID项目编号“项目编号”仅包含数字,而“项目 ID”由字母数字组成。您可以修改项目名称,该项目名称会在授权提示期间向用户显示。

在 Google Cloud 控制台中查看 Google Cloud 日志和错误报告

如果您的脚本项目使用了 Google Cloud Logging错误报告功能,则可以在 Google Cloud 控制台中执行以下操作来查看这些日志和报告:

  1. 打开 Cloud 项目
  2. 点击“菜单”图标
  3. 向下滚动到操作部分,然后点击日志记录 > 日志浏览器
  4. 如需查看错误报告,请向下滚动到操作部分,然后点击 Error Reporting。如果系统提示您设置错误报告,则表示您的脚本项目尚未记录任何异常。

在使用需要 OAuth 的服务时,Google 会提示用户向这些服务授权。借助 OAuth 同意屏幕设置,您可以设置 Google 向用户显示的一些信息,例如应用名称和服务条款网址。

默认 Cloud 项目会根据 Apps 脚本项目详情自动创建同意屏幕;您无法调整这些设置。您可以使用标准 Cloud 项目自定义此信息。您可以通过执行以下操作来配置脚本的同意屏幕:

  1. 打开 Cloud 项目
  2. 依次点击“菜单” > API 和服务 > 凭据
  3. 点击配置同意屏幕
  4. 填写同意屏幕工作流程的各个部分。
  5. 如需在工作流的每个阶段记录更改,请点击保存并继续

创建 OAuth 凭据

Apps 脚本通常会为您的脚本所使用的服务设置 OAuth。对于某些应用,您必须创建额外的 OAuth 凭据(客户端 ID 和客户端密钥)。您只能对标准项目执行此操作。

如需为您的脚本项目创建客户端 ID 和客户端密钥,请执行以下操作:

  1. 打开 Cloud 项目
  2. 依次点击“菜单” > API 和服务 > 凭据
  3. 依次点击创建凭据 > OAuth 客户端 ID
  4. 应用类型下,选择您的应用类型,并填写生成的表单(如果需要)。完成后,点击创建
  5. 在显示的对话框中,点击下载 JSON。您可以使用此文件来配置 OAuth。

向标准 Cloud 项目添加更多所有者

您可以向标准项目添加其他所有者或其他角色。 如果您要在项目上开展协作,这有助于确保团队中有人始终有权访问脚本项目的 Google Cloud 设置。

您可以通过执行以下操作,向标准项目添加其他所有者或其他角色。您必须拥有项目的修改权限才能执行以下任一更改:

  1. 确定您的协作者。我们建议您创建或使用现有的 Google 群组。您还可以在协作者列表中指定网域,以包含该网域中的所有用户。
  2. 打开脚本的 Cloud 项目
  3. 依次点击“菜单” > IAM 和管理 > IAM
  4. 点击顶部的添加
  5. 按照屏幕上的说明向 Cloud 项目添加一个或多个新成员及其角色。您可以将个别电子邮件地址、Google 群组或网域添加为新成员。
  6. 点击保存

将单个脚本分组到单个 Cloud 项目中

您可以让多个 Apps 脚本项目共享同一个标准 Cloud 项目。为此,请创建一个标准项目,然后切换每个脚本项目以使用该项目。您无法对默认项目执行此操作。

使用其他标准 Cloud 项目

您可以切换脚本项目,使其使用其他标准 Cloud 项目。如果您的脚本需要手动配置 Cloud 项目,则必须从默认项目切换到标准项目。如需详细了解何时需要使用标准项目,请参阅标准 Cloud 项目

改用其他标准 Cloud 项目的影响

如果您将脚本从默认项目或其他项目切换到其他标准项目,则会造成以下影响:

  • 如果您为脚本激活了高级服务,则必须在新 Cloud 项目中启用相应的 API。您将丢失与上一个 Cloud 项目中的高级服务相关联的任何数据。如需了解如何在 Cloud 项目中启用 API,请参阅启用 Google Workspace API
  • 之前已为该脚本授权的所有用户都必须重新授权。在大多数情况下,先前已授权与新项目相关联的应用的所有用户也必须重新授权。
  • 如果您的脚本与 Google Workspace Marketplace 中的应用详情相关联,那么您的应用详情、用户和评价不会转入新项目。您必须在新项目中创建应用详情,并且用户必须重新安装您的应用。如需了解如何创建新的应用详情,请参阅发布应用
  • 您无法将脚本切换回默认项目。将脚本设置为使用标准项目后,Apps 脚本会删除默认项目。

切换到其他标准 Cloud 项目

如需将脚本的现有 Cloud 项目切换到另一个 Cloud 项目,请按以下步骤操作:

  1. 如果您没有合适的 Cloud 项目,请按照创建项目中的说明创建一个。设置一个容易记住的项目名称,以便在 Google Cloud 控制台管理资源页面中找到它。在请求用户授权脚本时,Apps 脚本会使用此名称。
  2. 如果您要使用现有项目,请打开 Google Cloud 控制台管理资源页面,找到要使用的现有项目。您必须拥有项目的项目浏览器和 OAuth 配置编辑者角色,或具有同等权限的角色。您无法使用 Apps 脚本自动创建的项目。
  3. 确定您的 Cloud 项目的项目编号
  4. 打开要替换其 Cloud 项目的脚本。
  5. 点击左侧的 Project Settings 图标
  6. Google Cloud Platform (GCP) 项目下,点击更改项目
  7. 输入新项目编号,然后点击设置项目

Cloud 项目和共享云端硬盘

共享云端硬盘(以前称为“团队云端硬盘”)提供了共享云端硬盘空间,供云端硬盘用户共享 Apps 脚本项目和云端硬盘文档。与团队一起开发脚本、插件和 Web 应用时,共享云端硬盘很有价值,但也会限制您可以通过较旧的默认 Cloud 项目执行的操作。

以下限制列表介绍了 Cloud 项目如何与共享云端硬盘互动:

  • 如果您的脚本项目使用标准项目,则脚本项目位于共享云端硬盘中时没有其他限制。
  • 如果您的脚本项目使用 2019 年 4 月 8 日或之后创建的默认项目,那么当该脚本项目位于共享云端硬盘中时,没有其他限制。
  • 如果您的脚本项目使用 2019 年 4 月 8 日之前创建的默认项目,那么当该脚本项目位于共享云端硬盘上时,系统会应用以下限制:
    1. 您无法使用 Apps 脚本界面或 Google Cloud 控制台访问默认项目。此限制可防止您执行需要直接访问项目的操作
    2. 您无法启用高级服务。如需激活高级服务,请切换到标准项目。
    3. 当您将现有 Apps 脚本项目移至共享云端硬盘时,Google 会限制对默认 Cloud 项目的访问权限。如果您在移动之前拥有访问权限,则仍可访问默认项目。例如,如果您在“我的云端硬盘”文件夹中创建了一个脚本,然后将该脚本移动到了共享云端硬盘中,您仍然可以访问该脚本的 Cloud 项目。您的共享云端硬盘中的协作者可能无法执行此操作。
    4. 脚本会保留在移动到共享云端硬盘之前所属的 Cloud 项目名称。即使您更改共享云端硬盘中的项目名称,授权脚本的用户仍会在授权对话框中看到旧名称。

为避免对旧脚本产生上述限制,请切换到标准项目

获取 Apps 脚本 Cloud 项目列表

如果您拥有组织的 Apps 脚本项目文件夹的 resourcemanager.projects.list 权限,则可以查看文件夹中的所有标准和默认 Apps 脚本 Cloud 项目。

  1. 打开 Google Cloud 控制台管理资源页面
  2. 复制 Apps 脚本文件夹旁边的 ID。
  3. 点击过滤条件 > 父级 ID,然后粘贴 Apps 脚本文件夹 ID。

删除 Apps 脚本 Cloud 项目

如需删除 Apps 脚本 Cloud 项目,请按照获取 Apps 脚本 Cloud 项目列表下的步骤操作,选择要删除的项目,然后点击删除

如需使用 gcloud 删除 Apps 脚本项目,请使用以下命令。

gcloud projects list --filter='parent.id=APPS_SCRIPT_FOLDER_ID'
gcloud projects delete PROJECT_ID

如需详细了解如何删除 Cloud 项目,请参阅关停(删除)项目