本帖最后由 truthrudy 于 2016-2-19 18:14 编辑
基于 Google Apps 做企业应用的开发者们,现在你可以选择使用自己喜欢的编辑器写 Apps Script 啦!
使用现代工具开发 Apps Script
一直以来,Apps Script 编辑器都是在线运行,您无法使用自己习惯的开发环境编码,也无法与其他开发者进行协作,从而让项目的开发、测试以及版本发布都变得非常繁琐。如果您既能使用 Apps Script 享受 Google 平台的强大,同时也可以使用自己的熟悉开发环境,践行自己的开发最佳实践,那会是何等的完美?
现在,这一设想已经成为现实。
npm install -g node-google-apps-script
项目“node-google-apps-script”是基于 Node.js 的命令行接口 (CLI),它使用 Google Drive API 从命令行更新 Apps Script 项目。您可以在 NPM 站点上查看节点包,也可以查看 GitHub repo。这两个链接都提供使用说明。此工具由 Dan Thareja 创建,随后 Matt Condon 添加了附加功能。
查看NPM站点,请访问: npmjs.com/package/node-google-apps-script 查看 GitHub repo,请访问: github.com/danthareja/node-google-apps-script
在使用此工具前,请先看下 Apps Script “导入导出项目”页面。在规划开发流程时应注意几个事项。另外,为了充分利用此方法进行开发,还可以采用几个最佳实践。
查看Apps Script “导入导出项目”页面,请访问: developers.google.com/apps-script/import-export?utm_campaign=app_series_100blog_121715&utm_source=appdev&utm_medium=blog
若要获取所有 Apps Script 示例,添加以下导入/导出开发示例: 此示例位于“import_export_development”子目录下。
查看GitHub 上示例代码,请访问: github.com/google/google-apps-script-samples/tree/master/import_export_development
您的单独 Apps Script 项目位于 Google Drive 中。如果您使用与上面链接相似的命令行接口 (CLI) 工具,您可以选择在喜欢的编辑器中工作,将代码提交并同步到您选择的存储库中。
您可以在任务运行器中添加任务,以将代码推送到一个或多个 Apps Script 项目中,针对不同的环境有条件地包含或排除代码,检查编码样式、linting(检查代码潜在问题)、minifying(精简代码)等。
您可以更轻松地创建与 UI 相关的文件,并将其推送到 Apps Script 以外的文件主机,如果您构建的其他应用也使用这些相同的文件,则该方法非常有用。
典型的开发工具,通过 Drive API 与 Apps Script 集成
2. Apps Script 项目生命周期最佳做法
除了“导入导出项目”页面上的信息外,还需要注意以下几个事项: 本地文件设置为主设置。如果您在本地添加、删除或重命名文件,则使用两个链接工具中的任何一个进行下一次上传时,Apps Script 项目都会自动反映您的本地文件设置。 您可以根据需要为本地文件命名。只需将“.html”附加到文件传送任务中的任意客户端“.js”或“.css”,然后再上传到项目。上面引用的工具将您暂存的用于上传的任意“.js”文件视为 Apps Script 服务器脚本文件(编辑器中的“.gs”)。它将暂存的任意“.html”视为您通过 HtmlService 访问的“客户端”代码。这意味着您可以开发带扩展名“.js”和作为 JavaScript 的服务器脚本,以便您的本地工具识别 JavaScript 语法。在开发过程中,客户端代码(例如,您需要通过 HtmlService 交互的代码)可以是“.html”、“.js”或“.css”,从而让您的编辑器可以提供正确的语法高亮显示及验证体验。
通过在脚本编辑器外部工作,除编辑体验外,您可以获得的最大改进是不再受只能处理一个 Apps Script 项目的限制。您可以更轻松地以团队形式与个别开发者进行协作,这些开发者具有自己的工作 Apps Script 项目,同时还具有更易于控制的测试、用户接受度和生产版本,每一个都具有相应流程并且更安全。除了与其他常规项目做法保持一致外,还可通过多个 Apps Script 特定的方式来充分利用这个多环境方法。 如果您将使用此方法,则应考虑以下三个最佳做法: 针对“本地”开发使用特定的配置值。 构建可以独立运行的测试方法。 添加用于开发和测试的依赖项。
3. 最佳做法
针对“本地”开发使用特定的配置值
我们提供的示例简要说明了基础配置类如何允许开发者为自己的调试和测试注入本地值。这种情况下,开发者还可添加注解@NotOnlyCurrentDoc,它会通知 Apps Script 它们需要完整范围的 Drive API 访问权限。在此项目中,“生产”部署具有注解@OnlyCurrentDoc,会使系统生成 OAuth 范围,该范围仅包括与脚本关联、作为 Sheets、Docs 或 Forms 加载项运行的文档。如果向源项目的“ignore”文件添加标准文件模式,则这些开发者特定的文件将无法进入实际的代码库。
您的项目的优势 — 生产拥有的 OAuth 范围有更多的限制,而开发者在开发期间可以使用更广泛的访问权限。开发者还可以拥有自己的个人配置设置,以支持他们的具体开发工作。
构建可以独立运行的测试方法尽管目前没有自动触发测试的方法,您可能仍希望创作单元测试,以便在项目中验证特定函数。另外,您可能还具有用于测试的特定配置值。再次强调,上述所有文件都不应进入生产部署。您甚至可以使用Apps Script Execution API 从测试运行器驱动这些测试!
查看Apps Script Execution API,请访问: https://developers.google.com/apps-script/guides/rest/api?utm_campaign=app_series_100blog_121715&utm_source=appdev&utm_medium=blog
您的项目的优势 — 您可以创作测试函数,并保证它们独立于生产 Apps Script 文件。这可为您的 Apps Script 项目瘦身,同时保证生产用户所需的正确 OAuth 范围。
添加用于开发和测试的依赖项如果您正在为 Sheets 或 Docs 开发加载项,并且预期在 SpreadsheetApp 上有“活动”项目。但是,当您进行开发或测试时,您可能会在没有“活动”上下文的情况下运行您的 Apps Script。如果您需要在此模式下进行开发,您可以在方法中包含此调用以获得最新的活动项目,同时还可确定在哪个模式下运行。这将允许您的开发或测试实例注入用于测试的“活动”文档 ID,从而在真实环境中运行时可以将其委派给 getActive* 结果。
您的项目的优势 — 您可以将更好的单元测试方法集成到项目中,即使最终部署状态通常取决于调试时无法获取的资源。
4. 总结
现在,您可以选择使用您自己的开发和源管理工具。尽管在发布为 Web 应用或加载项、配置高级服务等应用的生命周期中您仍需使用 Apps Script 编辑器,但采取此步骤可帮助您充分利用 Apps Script 平台的优势。请记得在 Google Developers 站点上查看 Apps Script,以获取有关 Apps Script 开发的更多信息和示例。
如果您碰巧在命令行上使用 python 工具以推动团队的构建流程,您可以查看 Joe Stump's python-gas-cli。您可以在GitHub repo 中查看软件包信息,同时也可以在上面找到使用说明。
查看软件包信息,请访问: github.com/joestump/python-gas-cli pypi.python.org/pypi/python-gas-cli/0.0.1
|