与其他开发者协作

Apps 脚本提供了一些功能,可帮助您和其他开发者一起构建和维护脚本、插件和 Web 应用。

协作功能基础知识

为了在项目上展开协作,您和您的协作者必须全部拥有 Apps 脚本项目文件(及其容器,如果是绑定脚本)的编辑者权限。这样一来,您团队中的所有人都可以查看 Apps 脚本代码并进行更改。编辑者还可以创建新的代码版本、发布插件,以及将脚本部署为 Web 应用或 Apps Script API 的可执行文件。

您可以提前规划如何处理项目、插件或 Web 应用的修改、审核、版本控制以及(如适用)的部署和发布,以便为您的团队提供帮助。独立项目通常最容易开展协作,因为它们直接显示在 Google 云端硬盘中,是插件和 Web 应用开发的推荐项目类型。

当脚本项目所有者离开团队,没有将项目所有权转移给团队中的其他人时,就会出现协作中的常见问题。这可能会导致您无法维护或更新项目。将脚本项目放在共享云端硬盘中可以防止出现此问题,因为共享云端硬盘中的文件没有具体所有者。

通过 clasp 命令行工具进行协作

clasp 可让您在 script.google.com 与本地文件系统之间同步项目。如果您和协作者都使用源代码控制管理软件(如 git),则可以简化和自动执行代码开发。

如需了解详情,请参阅“使用 clasp 命令行界面”指南

使用共享云端硬盘开展协作

共享云端硬盘(以前称为“团队云端硬盘”)在 Google 云端硬盘中提供了一个共享空间,可供云端硬盘用户群组更有效地进行协作。存储在共享云端硬盘中的文件归整个群组所有,而非归个人所有。这意味着,当协作者离开群组时,他们不会获得文件所有权和控制权。

共享云端硬盘还允许您跨网域移动文件,一个网域中的共享云端硬盘可以有来自另一个网域的协作者,他们可以将文件从该网域移到共享云端硬盘。这对 Apps 脚本开发者来说非常有价值,因为这为团队提供了一种为不同网域中的客户开发插件、Web 应用或其他代码的方法。

当您使用共享云端硬盘在 Apps 脚本项目上进行协作时,请注意以下几点:

  1. 对某个共享云端硬盘拥有编辑者权限的协作者可以在该共享云端硬盘中创建或移动新文件。作为脚本编辑者,他们可以查看和修改脚本项目、运行脚本代码、创建新的脚本版本以及发布插件。
  2. 要将脚本部署为 Apps Script API 的 Web 应用或可执行文件,创建部署的帐号必须与脚本所在的共享云端硬盘属于同一网域。
  3. 通过共享云端硬盘,您可以将共享云端硬盘中的特定文件与群组外部的其他人共享,还可以像更新任何其他云端硬盘文件一样更新这些用户对这些文件的编辑和查看权限。但是,如果用户属于共享云端硬盘所属的团队,则您无法减少他们对特定文件的访问权限。例如,如果用户拥有某个共享云端硬盘的编辑权限,则您无法将其更改为对该共享云端硬盘中特定文件的“只能查看”权限。
  4. 拥有对共享云端硬盘的完整访问权限的协作者还可以删除文件和 Apps 脚本项目,以及将文件移出共享云端硬盘。
  5. 所有容器绑定脚本都使用为容器文件定义的相同查看者和编辑者访问权限列表。例如,如果您拥有某个 Google 表格的修改权限,那么同时也会拥有该表格附加的任何 Apps 脚本项目代码的修改权限。将此类容器文件放入共享云端硬盘会向共享云端硬盘的协作者授予与容器本身对脚本代码相同的访问权限。
  6. 当脚本项目位于共享云端硬盘中时,对其 Cloud Platform (GCP) 项目的访问可能会受到限制。如需了解详情,请参阅 GCP 项目和共享云端硬盘指南部分。
  7. 部署在一个网域中的 Web 应用,如果其所有权更改为其他网域中的共享云端硬盘或帐号,则这些应用会停止运行。要解决此问题,请将脚本移回其原始网域。
  8. 同样,如果部署为 Apps Script API 可执行文件的脚本项目在被 API 调用时停止运行,而且在通过共享云端硬盘从一个网域移到另一个网域时也是如此。要解决此问题,请将脚本移回其原始网域。

使用共享文件夹进行协作

如果您无法使用共享云端硬盘进行协作,可以改为使用共享文件夹。当您创建 Apps 脚本项目或将项目移动到其他人可以访问的 Google 云端硬盘文件夹时,他们将继承对该 Apps 脚本项目所拥有的相同访问权限。例如:

  • 如果某人拥有该文件夹的修改权限,则可以修改或删除 Apps 脚本项目并运行脚本。
  • 如果某人仅拥有该文件夹的查看权限,则可以查看 Apps 脚本项目并运行该脚本。

通过项目共享开展协作

您可以直接与所有协作者共享项目,从而协同处理项目。您可以直接共享常规 Google 云端硬盘文件夹或共享云端硬盘中的脚本项目。如果您使用此方法,建议您仔细规划脚本的所有者和维护者。

独立项目会在您的 Google 云端硬盘中显示为文件,您可以像共享任何其他文件一样共享它们。如需了解详情,请参阅共享文件和文件夹

容器绑定的项目不会显示在 Google 云端硬盘中。如需共享容器绑定项目,请共享父级容器文件。例如,如果您有绑定到 Google 表格电子表格的脚本,则可以让某人成为该电子表格的编辑者,使其成为该脚本的编辑者。容器绑定项目会继承其容器文件的查看者和编辑者访问权限设置。

所有容器绑定脚本都使用为容器文件定义的相同所有者、查看者和编辑者访问权限列表。容器所有者会获得新脚本项目的所有权,无论该项目的创建者是谁。

协作和项目资源

资源是指与项目关联但独立于项目代码的实体。本部分介绍协作处理项目会对其资源产生怎样的影响,特别是 Cloud Platform 项目、触发器、库和用户属性。

协作和 Google Cloud 项目

每个 Apps 脚本项目都有一个关联的 Google Cloud 项目。Google Cloud 项目有自己的一组所有者、编辑者和其他角色,这些角色可能与可以访问脚本项目的用户组不同。

如果您的脚本项目要作为插件发布,则该项目必须使用标准 Google Cloud 项目。当您协作处理使用标准 Google Cloud 项目的应用时,我们建议您配置 Google Cloud 所有者和角色,以确保所有协作者具有适当的访问权限级别。这有助于防止您因项目所有者不再与您的组织而失去对项目的 Cloud 设置的访问权限。这对于插件而言尤其重要

协作和触发器

与他人协作处理一个项目时,您创建的任何可安装触发器都不会与有权访问该项目的人员共享。如果您需要为所有协作者设置一致的触发器设置,可以使用脚本服务,在运行时以编程方式创建触发器。如需了解详情,请参阅以编程方式管理触发器

协作和库

项目协作者可以使用项目中包含的库。 但是,如果它们对包含的库没有至少读取级访问权限,就无法使用这些库。在这种情况下,脚本会抛出错误。如需详细了解库,请参阅管理库

协作和用户属性

用户属性对于创建它们的用户来说是唯一的。这意味着项目协作者无法查看或访问您的用户属性,而您也无法看到或访问其用户属性。如果您想与协作者共享项目特定的属性,请使用脚本属性。如需了解详情,请参阅属性指南