识别修改 Google 表格的外部应用程序脚本

Posted

技术标签:

【中文标题】识别修改 Google 表格的外部应用程序脚本【英文标题】:Identify External Apps Script That Modifies Google Sheet 【发布时间】:2021-05-24 08:53:07 【问题描述】:

有一个带有绑定 Apps 脚本的 Google 表格。应用自定义格式等的功能之一(由我前段时间编写)由安装的 onEdit 触发器(由客户端安装)触发。到目前为止,这一切都很好。

电子表格所有者(我的一个客户)最近抱怨说,当他在单元格中输入任何文本时,它旁边的单元格将自动被“FALSE”覆盖,当他编辑“FALSE”时,第一个单元格被“FALSE”覆盖,这根本没有意义。

我检查了原始脚本,它看起来仍然很好,它不会导致这种自动创建混乱。为了确保我没有遗漏任何东西,我检查了,只有一个已安装的触发器,并且绑定脚本中没有其他简单的 onEdit 函数。

我还临时更改了已安装的 onEdit 触发器启动的函数的名称以禁用触发器。尽管现在编辑无法在绑定脚本中运行任何功能,但自动混乱仍然处于活动状态,并且在用户编辑时自动覆盖了某些单元格。

这让我怀疑外部未绑定脚本(也可能是绑定到具有计时器触发器的另一个电子表格的脚本)可能是罪魁祸首并造成了所有混乱。

我的问题是,是否有办法识别更改工作表的任何外部脚本(未绑定到此电子表格)?

在这种情况下,我无法提供任何代码或向您展示电子表格/脚本,因为它是机密的,属于客户。我也无法向您展示我尝试过的任何代码。只有上面的解释我是如何试图定位问题的根源的。

另外让我补充一下,在这种情况下,不止一个人在我不知道他们是谁的背景中弄乱工作表和脚本。因此,有可能一些流氓团体试图故意破坏我的工作(如果没有别的,那就是恶作剧)。


UPDATE_1

我已经制作了电子表格的副本,然后验证了已安装的触发器页面,并且没有安装任何触发器。

接下来,为了绝对确保我的任何脚本都不会导致问题,我删除了所有脚本。只剩下一个空项目,仍然与最初的名称相同。保存了空项目。重新加载电子表格并再次测试。

问题依然存在:当我编辑行为不端的单元格时,它旁边的单元格会自动变为“FALSE”。

我还确保这些列中不存在 ARRAYFORMULA。

【问题讨论】:

可以分享一下onEdit功能吗?另外,电子表格的共享设置是什么? 如原帖所述,我无法分享脚本。即使我会分享它,也没有什么区别,因为安装的 onEdit 触发器运行的功能被禁用,问题仍然存在。该问题不是由我为 onEdit 触发器提供服务的旧函数引起的。共享设置为受限。该电子表格归我的客户所有,我是一名编辑,还有另外两个编辑电子邮件地址(无论如何可能属于所有者)。 您看不到正在编辑工作表的脚本。您可以做的最好的事情是检查版本历史,看看谁将单元格编辑为 FALSE,至少将罪魁祸首限制在拥有脚本的人身上。 【参考方案1】:

@TheAddonDepot 首先在这里给出了主题问题的正确答案,谢谢,但由于某种原因他删除了它。如果他在这里重新发布相同的答案,我将接受它作为最佳答案并给予充分肯定。几分钟后,Rafa Guillermo 重复了一遍。

答案是无法识别修改电子表格的外部应用程序,但找到踪迹的唯一机会是查看版本历史记录,了解哪些编辑者修改了工作表。只要有人没有提供更好的答案,我就认为这是正确的答案。

同时(如原帖更新中所述)我已从电子表格中删除了所有脚本,但问题仍然存在。有了这个设置,剩下的唯一嫌疑人就是任何插件。

原来在插件菜单中可以看到这两个插件但没有安装

Sheets2GCal

魔法单元通知

由于我无法删除未安装的插件,我不得不安装 Sheets2GCal 然后立即将其删除。这解决了问题,自动混乱已经停止。

但是,为了确保另一个以后不会出现任何问题,我也安装并卸载了那个。

再次感谢贡献者。

【讨论】:

以上是关于识别修改 Google 表格的外部应用程序脚本的主要内容,如果未能解决你的问题,请参考以下文章

自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本

使用Google Apps脚本Web应用添加到Google表格

提交表单后发送电子邮件的 Google 表单应用脚本

如何使用 python 脚本修改 Google 表格中现有的受保护范围

如何在 Google Apps 脚本中使用服务帐户对 Google 表格进行身份验证

使用 Google Apps 脚本将 Null 值从表格插入 Mysql 数据库