40

我已经使用脚本编辑器为我的 Google 电子表格编写了一些代码。

我想与我的客户分享这个电子表格,但我不想分享我编写的代码。

此代码向我的电子表格添加了一个菜单,其中包含有用的功能,当我的客户打开此电子表格并应用以下条件时,这些功能应该工作/运行:他们不应该看到它的代码。

使用 Excel 很容易,但使用 Google 电子表格我不知道。. 我在谷歌上搜索了很多,但他们都给出了如何共享电子表格的想法。例如在“查看”模式下,但在这种情况下会出现问题:我的菜单功能(添加菜单)是“onOpen”并且在我的客户打开它时不会启动。

如何在 Google 电子表格中实现这一点?

4

6 回答 6

22

简答

将您的脚本作为编辑器插件或 Google Workspace 插件发布请记住,您可以将其设为私有,方法是选择不公开或仅对您的 G Suite/Google Workspace 组织可用。

解释

附加组件是在 2014 年添加的。这比使用库更好,因为您的附加组件不会共享任何内容。

请注意

  • 无法使用 Chrome 开发者工具或其他类似软件访问 Google Apps 脚本服务器端代码。
  • 附加组件有一些限制,请仔细研究它们,因为这种替代方案可能不适合您。
  • 如今,附加组件需要 Google Cloud 项目和 oAuth 同意屏幕。如果加载项将与外部用户共享,则需要 oAuth 验证和应用审查。

如果您不适合作为附加组件发布,您应该重新考虑您的解决方案,考虑使用 Web 应用程序,使用 Apps Script API 或 Google Sheets API。

参考

于 2018-01-03T17:24:43.520 回答
7

使用 Library文档解释了如何使用它,还有一些关于这个主题有趣帖子

于 2013-04-18T09:06:01.853 回答
4

制作一个仅包含客户端脚本的特殊库文件。您的客户端必须至少具有读取级别的访问权限。所以他可以看到你的剧本。删除您的脚本并在该文件中创建一个新的无辜脚本并将其保存为新版本。现在您的客户只能看到这个新脚本。因为他的应用程序仍在使用旧版本的库,所以原始脚本将照常完成他的工作。

于 2016-05-27T20:58:13.300 回答
1
  1. 创建 2 个库;一个是虚拟的(我称之为 Lib1),另一个是包含所有密码的核心库(我称之为 Lib2)。
  2. 将 Lib2 作为库添加到 Lib1,并在其中使用在 Lib2 中完全实现的必要方法。
  3. 公开共享这两个库并将其权限设置为查看者。
  4. 从Lib1的分享设置页面,有一个齿轮符号。确保未选中以下选项“查看者和评论者可以看到下载、打印和复制的选项”
  5. 将 Lib1 添加到客户的脚本(可能是电子表格脚本)。
  6. 以编辑者或查看者的身份分享您客户的脚本。

如果客户可以通过从其脚本的 Resources/Libraries 菜单访问它来获取 Lib1 ID,他将无法访问 Lib1 的 Resources/Libraries 菜单。由于步骤 4 中未选中的选项,他也无法制作 Lib1 的另一个副本,从而使他无法看到 Lib2 的 ID。

于 2020-05-31T12:11:46.180 回答
1

这里有一个类似的问题。那里接受答案。

您可以创建一个独立的应用程序脚本项目。然后从您的谷歌工作表脚本编辑器调用具有适当参数的独立应用程序脚本项目功能。这样,您在独立项目中的秘密将受到保护。

于 2021-05-11T17:53:24.890 回答
0

除了脚本编辑器窗口中“发布”菜单下列出的选项外,以下 3 个选项还可以使代码对开发人员保密。

选项 1:
要创建 3 个文件:
1.1 接收用户输入的电子表格,用作用户界面,并与用户共享。
1.2 一个独立的库脚本文件,用于接收来自 UI 电子表格的输入。
1.3 一个独立的私有脚本文件,用于处理库文件接收到的数据。

选项 1 电子表格

作为此选项的参考,请参阅上述链接中的电子表格。
单击“提交”后,电子表格 ID 将发送到库脚本文件,并授予开发人员编辑权限。然后私有脚本文件打开文件并处理输入。

选项 2:
要创建 5 个文件
2.1 用作登录屏幕的电子表格。这是与用户共享的。
2.2 作为包含数据的实际应用程序的电子表格。一个用户界面。成功登录后,此电子表格可供用户使用。用户从此工作表中注销应用程序。
2.3 维护用户登录状态的电子表格。这是开发人员私有的。
2.4 一个库脚本文件,用于更新上一步创建的电子表格中用户的登录状态,并更改对私有脚本文件的访问权限。此脚本文件作为库资源包含在登录电子表格和用户界面电子表格中。
2.5 处理在用户界面表中输入的数据的库脚本文件。此脚本文件包含开发人员想要保密的代码。此文件仅作为库资源包含在用户界面电子表格中。

选项 2 电子表格

作为此选项的参考,请参阅上述链接中的电子表格。
当用户单击“开始”按钮时,用户在更新电子表格中的单元格值后登录到应用程序 2.3。包含私有代码的库脚本文件在使用 addViewer 方法成功登录后设置为可共享。应用程序的链接被呈现给用户并且用户在“登录”时与应用程序交互。当用户从应用程序注销时,将调用 removeViewer 方法再次将脚本文件设为私有。
在此选项中,用户在使用应用程序时可以访问私有代码文件。该文件可以通过使用计时器、脚本触发器、提示、警报等来保密。

在我的两个电子表格中,我使用设置为每分钟运行一次的基于时间的触发器来处理应用程序。这可能会导致输出延迟。触发器是在服务器端而不是在客户端创建的。

选项 3:私有共享文件夹

2 文件将被创建:
3.1 接收用户输入的电子表格,用作用户界面,并与用户共享。
3.2 用于处理电子表格的独立私有脚本文件。

请参阅此链接了解如何创建私人共享文件夹。在此选项中,用户看不到任何脚本。即使是共享电子表格也可能不包含代码。

于 2020-05-27T14:09:14.793 回答