我正在尝试使用Google Apps脚本实施电子表格应用。但是我有几个问题不符合我的要求。我已经查看了这些问题,但未能找到答案或更好的替代方法来实现此功能。
要求:
编写可管理的可测试代码
不要将脚本下载到每个电子表格,而是在安装后以某种方式将其下载到驱动器中的任何电子表格中。
1,2是我遇到的问题。
Google Apps脚本IDE似乎难以处理大型代码库(我的意思是不要让代码保持管理和处理代码的增长)
这是主要问题(不符合要求)
假设我为电子表格创建了一个脚本,然后我将其部署,然后我就可以在我喜欢的任何其他脚本上安装脚本,然后执行它。但是必须为每个电子表格完成此操作。安装的脚本不在脚本管理器中,无需在所有电子表格中使用,而无需每次都在库中安装脚本。
当我直接在Google云端硬盘上创建Spreadsheets项目时。由于未分配给特定的电子表格,因此我不允许从潜水(从脚本管理器)中选择它并将此脚本加载到我希望的电子表格中,然后运行/调试它。
我不希望为上述问题1找到更好的解决方案。
但问题2是燃烧的, 这是否可以满足要求?
如果无法通过Google Apps脚本实现此要求,我必须选择其他方式。
到目前为止我想到的替代方案:
我考虑过可以提供电子表格网址然后提供身份验证信息的桌面应用程序,并使用电子表格API从桌面应用程序执行必要的操作。这是虚拟的方法,不是那么用户友好。
转到Google应用,您可以使用G身份验证登录,然后在使用电子表格API提供电子表格网址后,执行必要的操作。但我不确定Google应用的身份验证过程以及驱动器访问权限的可能性。
Final是Crome应用程序,其中Crome提供了访问给定电子表格URL所需的身份验证,并对电子表格进行了必要的操作。
首选哪些选项,或者是否有更符合我上述要求的更佳解决方案?
答案 0 :(得分:4)
“大代码库”的定义是主观的,但即使是具有数百行代码的项目也可以从组织中受益。在IDE中,您有两个主要工具可用于帮助组织代码;文件和Libraries。
这个答案主要是一系列链接到其他答案的链接,在一些主题领域内应该解决你所表达的问题。
脚本项目可以有多个文件,类型为“gs”(脚本)或“html”。命名空间扩展到项目中的所有脚本文件。将方法分离到文件中是一种在项目中组织代码的简单方法(例如,将所有测试放在一个文件中与生产代码分开),尽管它对于跨项目的可重用性几乎没有。
Libraries是已发布的项目,可使其他项目合并其功能,而无需复制实际代码。首先看一下Notable Script Libraries。库从库名中获取其名称空间 - 例如,我有一个与输入和输入相关的实用程序库。 CSV文件的输出,我(巧妙地)命名为CSVUtils。该库中的方法作为CSVUtils.example()
访问,并由自动完成功能支持。库支持jsdoc的有限子集,并在发布时提供指向生成的文档的链接。
Organizing Spreadsheet Code in several *.gs files - even possible?
Is it possible to have one script for multiple spreadsheets?
How, or where, do I define a function for use in more than one spreadsheet?
google-apps-script have multiple scripts in one spreadsheet
Creating a namespace-like organization in a google apps script library
Publishing a Google Apps Script Library
Design patterns for libraries in GAS?
ScriptDb in Library accessed by WebApp
Project and multiple doGet() script files published as web apps -- Need clarification
... every SO question about Apps Script Libraries。
使用外部JavaScript库:
首先阅读Understanding Caja Sanitization,特别是有关外部JavaScript库的部分。
Google Apps Script: How can use js library in HtmlService
When does Google require re-authentication?
OAuth in Google Apps Scripts Libraries
Source-code of Libraries used by WebApps visible to everybody?