每个 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 项目时
在以下情况下,您必须使用标准项目:
- 在 Google Workspace Marketplace 中将脚本项目作为插件发布。
- 验证脚本项目的 OAuth 客户端。
- 如果应用需要使用 Apps Script API 的
scripts.run
方法在脚本项目中执行函数, - 如需在 Google Cloud 控制台中查看脚本项目的 Google Cloud 日志,Google Cloud 控制台提供了更多用于过滤和查看日志的工具,并且比 Apps 脚本信息中心提供的简化视图更有用。
- 使用 Error Reporting 查看脚本项目的错误报告。
- 创建文件打开对话框。
- 以其他方式需要手动控制项目的 Google Cloud 设置时。
标准 Cloud 项目属性
标准项目具有以下属性:
- 您可以直接从 Google Cloud 控制台访问项目的所有 Google Cloud 设置。这样,您就可以激活 API、调整授权凭据以及配置其他详细信息。
- 当您删除某个脚本项目或切换到其他标准项目后,原始标准项目仍会保留,并且可以重复使用。
- 在脚本项目中激活高级服务时,必须手动激活标准项目中的相应 API。
- 多个脚本项目和其他应用可以共享同一个标准项目。如果您打算将脚本项目作为插件发布到 Google Workspace Marketplace,它必须拥有自己的标准项目。已发布的应用无法与其他应用共享 Cloud 项目。
- 如果要使用 Apps Script API 的
scripts.run
方法在其他应用中执行脚本项目中,则脚本项目和调用方应用必须共享同一标准项目。 - 当 Apps 脚本要求用户授权使用标准项目的脚本时,Cloud 项目名称(而不是脚本项目名称)将用于识别脚本。因此,请务必设置适当的 Cloud 项目名称。
访问标准 Cloud 项目
如需访问与脚本项目关联的标准项目,请执行以下操作:
- 打开 Apps 脚本项目。
- 点击左侧的 Project Settings 图标 。
- 在 Google Cloud Platform (GCP) 项目下,点击项目编号。
您还可以直接在 Google Cloud 控制台的管理资源页面上找到标准项目。
在标准 Cloud 项目中激活 API
通常情况下,Apps 脚本应用需要访问其他 Google API。为此,您必须在相应的 Cloud 项目中激活该 API。通过执行以下操作来激活 API:
- 打开 Cloud 项目。
- 依次点击“菜单”> API 和服务。
- 点击启用 API 和服务。
- 在搜索框中输入您要启用的 API,然后按 Enter 键。
- 在搜索结果中点击该 API,然后点击启用以为此 Cloud 项目激活此 API。
系统可能会提示您接受 Google API 或 Google Cloud 的服务条款。在接受之前,请仔细阅读《服务条款》。
根据具体应用,您可能还需要通过在 API 和服务信息中心内选择该 API 来配置该 API。
确定标准 Cloud 项目的 ID 和数量
所有 Cloud 项目都有项目名称、项目 ID 和项目编号。 有时,您必须拥有这些标识符才能配置服务或完成其他任务。
如需确定标准项目的 ID 和编号,请执行以下操作:
- 打开 Cloud 项目。
- 在右上角,依次点击“更多”图标 > 项目设置。
- 在随即显示的设置面板中,查看项目名称、项目 ID 和项目编号。“项目编号”仅包含数字,而“项目 ID”由字母数字组成。您可以修改项目名称,该项目名称会在授权提示期间向用户显示。
在 Google Cloud 控制台中查看 Google Cloud 日志和错误报告
如果您的脚本项目使用了 Google Cloud Logging 或错误报告功能,则可以在 Google Cloud 控制台中执行以下操作来查看这些日志和报告:
- 打开 Cloud 项目。
- 点击“菜单”图标 。
- 向下滚动到操作部分,然后点击日志记录 > 日志浏览器。
- 如需查看错误报告,请向下滚动到操作部分,然后点击 Error Reporting。如果系统提示您设置错误报告,则表示您的脚本项目尚未记录任何异常。
完成 OAuth 权限请求页面
在使用需要 OAuth 的服务时,Google 会提示用户向这些服务授权。借助 OAuth 同意屏幕设置,您可以设置 Google 向用户显示的一些信息,例如应用名称和服务条款网址。
默认 Cloud 项目会根据 Apps 脚本项目详情自动创建同意屏幕;您无法调整这些设置。您可以使用标准 Cloud 项目自定义此信息。您可以通过执行以下操作来配置脚本的同意屏幕:
- 打开 Cloud 项目。
- 依次点击“菜单”> API 和服务 > 凭据。
- 点击配置同意屏幕。
- 填写同意屏幕工作流程的各个部分。
- 如需在工作流的每个阶段记录更改,请点击保存并继续。
创建 OAuth 凭据
Apps 脚本通常会为您的脚本所使用的服务设置 OAuth。对于某些应用,您必须创建额外的 OAuth 凭据(客户端 ID 和客户端密钥)。您只能对标准项目执行此操作。
如需为您的脚本项目创建客户端 ID 和客户端密钥,请执行以下操作:
- 打开 Cloud 项目。
- 依次点击“菜单”> API 和服务 > 凭据。
- 依次点击创建凭据 > OAuth 客户端 ID。
- 在应用类型下,选择您的应用类型,并填写生成的表单(如果需要)。完成后,点击创建。
- 在显示的对话框中,点击下载 JSON。您可以使用此文件来配置 OAuth。
向标准 Cloud 项目添加更多所有者
您可以向标准项目添加其他所有者或其他角色。 如果您要在项目上开展协作,这有助于确保团队中有人始终有权访问脚本项目的 Google Cloud 设置。
您可以通过执行以下操作,向标准项目添加其他所有者或其他角色。您必须拥有项目的修改权限才能执行以下任一更改:
- 确定您的协作者。我们建议您创建或使用现有的 Google 群组。您还可以在协作者列表中指定网域,以包含该网域中的所有用户。
- 打开脚本的 Cloud 项目。
- 依次点击“菜单”> IAM 和管理 > IAM。
- 点击顶部的添加。
- 按照屏幕上的说明向 Cloud 项目添加一个或多个新成员及其角色。您可以将个别电子邮件地址、Google 群组或网域添加为新成员。
- 点击保存。
将单个脚本分组到单个 Cloud 项目中
您可以让多个 Apps 脚本项目共享同一个标准 Cloud 项目。为此,请创建一个标准项目,然后切换每个脚本项目以使用该项目。您无法对默认项目执行此操作。
使用其他标准 Cloud 项目
您可以切换脚本项目,使其使用其他标准 Cloud 项目。如果您的脚本需要手动配置 Cloud 项目,则必须从默认项目切换到标准项目。如需详细了解何时需要使用标准项目,请参阅标准 Cloud 项目。
改用其他标准 Cloud 项目的影响
如果您将脚本从默认项目或其他项目切换到其他标准项目,则会造成以下影响:
- 如果您为脚本激活了高级服务,则必须在新 Cloud 项目中启用相应的 API。您将丢失与上一个 Cloud 项目中的高级服务相关联的任何数据。如需了解如何在 Cloud 项目中启用 API,请参阅启用 Google Workspace API。
- 之前已为该脚本授权的所有用户都必须重新授权。在大多数情况下,先前已授权与新项目相关联的应用的所有用户也必须重新授权。
- 如果您的脚本与 Google Workspace Marketplace 中的应用详情相关联,那么您的应用详情、用户和评价不会转入新项目。您必须在新项目中创建应用详情,并且用户必须重新安装您的应用。如需了解如何创建新的应用详情,请参阅发布应用。
- 您无法将脚本切换回默认项目。将脚本设置为使用标准项目后,Apps 脚本会删除默认项目。
切换到其他标准 Cloud 项目
如需将脚本的现有 Cloud 项目切换到另一个 Cloud 项目,请按以下步骤操作:
- 如果您没有合适的 Cloud 项目,请按照创建项目中的说明创建一个。设置一个容易记住的项目名称,以便在 Google Cloud 控制台管理资源页面中找到它。在请求用户授权脚本时,Apps 脚本会使用此名称。
- 如果您要使用现有项目,请打开 Google Cloud 控制台管理资源页面,找到要使用的现有项目。您必须拥有项目的项目浏览器和 OAuth 配置编辑者角色,或具有同等权限的角色。您无法使用 Apps 脚本自动创建的项目。
- 确定您的 Cloud 项目的项目编号。
- 打开要替换其 Cloud 项目的脚本。
- 点击左侧的 Project Settings 图标 。
- 在 Google Cloud Platform (GCP) 项目下,点击更改项目。
- 输入新项目编号,然后点击设置项目。
Cloud 项目和共享云端硬盘
共享云端硬盘(以前称为“团队云端硬盘”)提供了共享云端硬盘空间,供云端硬盘用户共享 Apps 脚本项目和云端硬盘文档。与团队一起开发脚本、插件和 Web 应用时,共享云端硬盘很有价值,但也会限制您可以通过较旧的默认 Cloud 项目执行的操作。
以下限制列表介绍了 Cloud 项目如何与共享云端硬盘互动:
- 如果您的脚本项目使用标准项目,则脚本项目位于共享云端硬盘中时没有其他限制。
- 如果您的脚本项目使用 2019 年 4 月 8 日或之后创建的默认项目,那么当该脚本项目位于共享云端硬盘中时,没有其他限制。
- 如果您的脚本项目使用 2019 年 4 月 8 日之前创建的默认项目,那么当该脚本项目位于共享云端硬盘上时,系统会应用以下限制:
- 您无法使用 Apps 脚本界面或 Google Cloud 控制台访问默认项目。此限制可防止您执行需要直接访问项目的操作。
- 您无法启用高级服务。如需激活高级服务,请切换到标准项目。
- 当您将现有 Apps 脚本项目移至共享云端硬盘时,Google 会限制对默认 Cloud 项目的访问权限。如果您在移动之前拥有访问权限,则仍可访问默认项目。例如,如果您在“我的云端硬盘”文件夹中创建了一个脚本,然后将该脚本移动到了共享云端硬盘中,您仍然可以访问该脚本的 Cloud 项目。您的共享云端硬盘中的协作者可能无法执行此操作。
- 脚本会保留在移动到共享云端硬盘之前所属的 Cloud 项目名称。即使您更改共享云端硬盘中的项目名称,授权脚本的用户仍会在授权对话框中看到旧名称。
为避免对旧脚本产生上述限制,请切换到标准项目。
获取 Apps 脚本 Cloud 项目列表
如果您拥有组织的 Apps 脚本项目文件夹的 resourcemanager.projects.list
权限,则可以查看文件夹中的所有标准和默认 Apps 脚本 Cloud 项目。
- 打开 Google Cloud 控制台管理资源页面。
- 复制 Apps 脚本文件夹旁边的 ID。
- 点击过滤条件 > 父级 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 项目,请参阅关停(删除)项目。