Apps 脚本提供了一些功能,可帮助您和其他开发者一起构建和维护脚本、插件和 Web 应用。
协作基础知识
如需协同处理项目,您和协作者都必须对 Apps Script 项目文件(以及其容器,如果是绑定脚本)拥有编辑器访问权限。这样一来,您团队中的所有人都可以查看 Apps 脚本代码并对其进行更改。编辑者还可以创建新的代码版本、发布插件,以及将脚本部署为 Web 应用或 Apps 脚本 API 的可执行文件。
您可以提前规划如何处理项目、插件或 Web 应用的编辑、审核、版本控制以及(如果适用)部署和发布,从而帮助团队顺利协作。独立项目通常是最容易协同处理的,因为它们会直接显示在 Google 云端硬盘中,也是开发插件和 Web 应用时推荐使用的项目类型。
当脚本项目所有者离开团队而没有将项目所有权转移给团队中的其他人时,就会出现协作中的常见问题。这可能会导致您无法维护或更新项目。将脚本项目放在共享云端硬盘中可以避免此问题,因为共享云端硬盘中的文件没有特定所有者。
使用 clasp
命令行工具进行协作
clasp
可让您在 script.google.com 和本地文件系统之间同步项目。如果您和协作者使用 git
等源代码管理软件,则可以简化和自动化代码开发流程。
如需了解详情,请参阅有关使用 clasp
的命令行界面的指南。
通过共享云端硬盘开展协作
共享云端硬盘(以前称为“团队云端硬盘”)可在 Google 云端硬盘中提供一个共享空间,让一组云端硬盘用户能够更高效地协作。放入共享云端硬盘中的文件归整个群组所有,而不是个人所有。这意味着,当协作者离开协作团队时,他们不会带走文件所有权和控制权。
借助共享云端硬盘,您还可以跨网域移动文件:一个网域中的共享云端硬盘可以有来自其他网域的协作者,他们可以将文件从该网域移动到共享云端硬盘。这对 Apps Script 开发者来说非常有价值,因为它为团队提供了一种为不同领域的客户开发插件、Web 应用或其他代码的方式。
当您使用共享云端硬盘进行 Apps 脚本项目协作时,请注意以下几点:
- 对共享云端硬盘拥有编辑者权限的协作者可以创建或将新文件移至共享云端硬盘。作为脚本编辑者,他们可以查看和修改脚本项目、运行脚本代码、创建新的脚本版本、发布插件。
- 如需将脚本作为 Web 应用或 Apps Script API 的可执行文件进行部署,创建部署的账号必须与脚本所在的共享云端硬盘属于同一网域。
- 通过共享云端硬盘,您可以将该共享云端硬盘中的特定文件共享给群组以外的其他人,并可以更新他们对这些文件的编辑和查看权限,就像对待任何其他云端硬盘文件一样。但是,如果用户是共享云端硬盘所属的团队的成员,则无法减少其对特定文件的访问权限。例如,如果用户对某个共享云端硬盘拥有“修改”访问权限,那么您无法将该用户对共享云端硬盘中特定文件的访问权限更改为“只能查看”。
- 拥有共享云端硬盘完整权限的协作者也可以删除文件和 Apps 脚本项目,以及将文件移出共享云端硬盘。
- 所有容器绑定的脚本都使用为容器文件定义的相同查看器和编辑器访问列表。例如,如果您有 Google 表格的修改权限,则也拥有对其附加的任何 Apps Script 项目代码的修改权限。将此类容器文件放入共享云端硬盘后,共享云端硬盘的协作者对脚本代码的访问权限将与对容器本身的访问权限相同。
- 如果脚本项目位于共享云端硬盘中,则对其 Cloud Platform (GCP) 项目的访问权限可能会受到限制。如需了解详情,请参阅 GCP 项目和共享云端硬盘指南部分。
- 如果在一个网域中部署的网络应用的所有权更改为其他网域中的共享云端硬盘或账号,则该应用将停止运行。要解决此问题,请将脚本移回其原始网域。
- 同样,如果部署为 Apps Script API 可执行文件的脚本项目通过共享云端硬盘从一个网域移至另一个网域,那么在 API 调用该脚本项目时,该脚本项目将停止运行。要解决此问题,请将脚本移回其原始网域。
通过共享文件夹进行协作
如果您无法通过共享云端硬盘进行协作,可以改用共享文件夹。当您创建或将 Apps Script 项目移至其他人可以访问的 Google 云端硬盘文件夹时,他们会继承对该文件夹拥有的对该 Apps Script 项目的访问权限。例如:
- 如果用户拥有对该文件夹的编辑权限,则可以修改或删除 Apps 脚本项目并运行脚本。
- 如果某人只有文件夹的查看权限,则他们可以查看 Apps 脚本项目并运行脚本。
通过项目共享功能进行协作
您可以直接与所有协作者共享项目,从而协同处理项目。您可以直接共享位于常规 Google 云端硬盘文件夹或共享云端硬盘中的脚本项目。如果您使用此方法,建议您仔细规划脚本的所有者和长期维护人员。
独立项目会显示为 Google 云端硬盘中的文件,您可以像共享任何其他文件一样共享它们。如需了解详情,请参阅共享文件和文件夹。
Google 云端硬盘中不显示容器绑定项目。如需共享绑定到容器的项目,请共享父容器文件。例如,如果您将某个脚本绑定到某个 Google 表格电子表格,则可以通过将某人设为该电子表格的编辑者,让其成为该脚本的编辑者。绑定到容器的项目会继承其容器文件的查看者和编辑者访问权限设置。
所有绑定到容器的脚本都使用为容器文件定义的相同所有者、查看者和编辑者访问权限列表。无论新脚本项目是由谁创建的,容器所有者都会获得其所有权。
协作和项目资源
资源是与您的项目关联但独立于项目代码的实体。本部分介绍在项目上进行协作会对其资源有何影响,特别是项目的 Cloud Platform 项目、触发器、库和用户属性。
协作项目和 Google Cloud 项目
每个 Apps 脚本项目都有一个关联的 Google Cloud 项目。Google Cloud 项目有自己的一组所有者、编辑者和其他角色,这些角色可能与可以访问脚本项目的一组用户不同。
如果您的脚本项目是要作为插件发布的,则必须使用标准 Google Cloud 项目。当您协作处理使用标准 Google Cloud 项目的应用时,我们建议您配置 Google Cloud 所有者和角色,以确保所有协作者都拥有适当的访问权限级别。这有助于防止因项目所有者不再在贵组织中而导致您无法访问项目的 Cloud 设置。这对于插件尤为重要。
协作和触发器
在项目协作期间,您创建的任何可安装的触发器都不会与有权访问您项目的用户共享。如果您需要为所有协作者设置一致的触发器,可以使用 Script 服务在运行时以编程方式创建触发器。如需了解详情,请参阅以编程方式管理触发器。
协作和库
项目协作者可以使用项目中包含的库。 不过,如果用户对包含的库没有至少读取级别的访问权限,则无法使用这些库,在这种情况下,脚本会抛出错误。如需详细了解库,请参阅管理库。
协作和用户属性
用户属性是指创建它们的用户所特有的属性。这意味着,项目协作者无法查看或访问您的用户媒体资源,而您也无法查看或访问他们的用户媒体资源。如果您想与协作者共享项目专用属性,请使用脚本属性。如需了解详情,请参阅“媒体资源”指南。