9

我是一名业余编码员——我真的只做一些事情来让我的生活更轻松。我设置了谷歌表格和电子表格来跟踪我学校不同年级的纪律问题。我写了一个简短的脚本,通过电子邮件通知适当的人任何提交,并且可以过滤和创建有关选定学习者的报告。

因为我是 DIY 编码的(英语和法语老师,所以我没有学编程),我经常想出一些从一开始就应该很明显的改进。我真的不想将脚本改进复制并粘贴到每个电子表格的脚本编辑器中。我已将此脚本作为独立文件复制到 Google 云端硬盘中,但我无法将其插入任何电子表格,因为图库只能访问已发布的脚本/应用程序。有没有解决的办法?我见过提到使用库,但我什至不知道从哪里开始。您可以在 Google Drive 中创建一个独立的脚本但实际上不使用它,这感觉有点傻。

任何帮助,将不胜感激。

4

4 回答 4

10

This was initially raised as a problem a while ago, and Google's solution was the "libraries" feature.

So you will want to

  1. You must save a version of your project. File > Manage Versions...
  2. Then go into File > Project Properties and copy the project key.
  3. Then in all other spreadsheets, you must go into the Script Editor and to go Resources > Manage Libraries. Then paste the project key from above and add it to that spreadsheet script.

There is not an automated way to accomplish this. In order to have a script run on any spreadsheet, you must go into the Script Editor for each spreadsheet.

Source

于 2013-02-20T13:54:52.710 回答
5

另一个答案(Phil Bozak)一点也不差,因为它概述了如何构建图书馆,但恐怕这不足以让你真正“走上正轨”。

如文档中所述,您可以像使用默认服务一样使用包含的库,这意味着库函数不能直接作为脚本使用,而是应该被视为脚本函数可以调用的工具箱。

因此,在您的每个电子表格中,您应该有许多实际“调用”图书馆服务的基本功能,后者负责实际操作。

让我举一个简单的例子:假设您想更改工作表的背景颜色,您有一个函数yourLibrary可以更改当前工作表的颜色(yourLibrary是您给库的名称),该函数将被调用changeColor

现在在您的脚本中您可以使用yourLibrary.changeColor,但如果您希望在特殊操作(onEdit、onOpen... 或菜单调用)上执行此“服务调用”,则电子表格脚本本身必须存在此“服务调用”,并且该库必须是在同一个脚本编辑器的资源中也引用了。

所有这些都是为了说明库功能非常有用且非常简单,但是您仍然需要在每个电子表格中都有一个“骨架脚本”,并且您将不得不考虑如何使用调用“可更新部分”的基本结构来重建脚本真正的东西'。

不是那么简单,但(完成之后)很舒服;-)

希望这足够清楚。

于 2013-02-20T16:25:23.060 回答
2

您可能还想考虑您的个人电子表格是否甚至需要自己的容器脚本。为什么你的一个人不能只读入并在所有工作表上运行报告?

于 2013-02-21T04:01:26.197 回答
0

另一种解决方案可能对您有所帮助,您可以在驱动器中创建脚本应用程序文件,并将您想要的所有电子表格 ID 放入数组中并使用循环技巧运行脚本

于 2017-09-03T17:27:27.320 回答