2012-08-28 166 views
8

我正在使用Google Apps脚本对电子表格中的数据运行加密。它运行良好,但电子表格中的便捷修订历史记录使其成为一个有点争议的问题,因为您可以在加密之前简单查看版本。删除修订历史记录

有没有办法删除修订历史记录,或只是不让它们一起创建?

+0

电子表格应对清除历史记录。它可以是一种解决方法。 – megabyte1024

+0

是的,但我有外部脚本在这个电子表格上工作。复制会改变ID并意味着需要重新分配脚本。其他脚本访问它的事实是我首先想要对数据进行编码的主要原因。 – MartinK

+0

我假设历史列表有一个限制。可以尝试进行一些虚拟变更,这将推出未加密的历史记录。 – megabyte1024

回答

3

号 访问修订历史记录明确不会对谷歌表中删除条目的驱动API

要注意修订历史记录只能被具有编辑权限的人查看。仅查看或评论版权无法查看修订历史记录。

一种解决方案是让用户通过Google表单将数据提交到非常窄的共享表单,并设置触发器将未加密的非敏感元数据/聚合数据复制到更公用的工作表以供不可信用户访问和脚本。单元格公式IMPORTRANGE()也可以工作,它可以从输入公式的人那里获得访问权限,因此可以将数据从受限制的电子表格移动到不受限制的电子表格,而不会影响原始表单。

第二个解决方案稍微笨重一点,但更接近您的要求是为用户和外部脚本提供对包含工作表的驱动器文件夹的访问权限。随着文件夹脚本的ID可以通过名称drive api搜索该表,用户使用他们的眼睛来查找它的名称。您的加密脚本在完成加密后,将使用SpreadsheetApp.copy(name)复制电子表格,该表格将复制所有公式,格式,数据甚至脚本,但不复制修订历史记录。通过copy()与原始表单相同的名称,驱动器文件名称不必是唯一的。使用驱动器api将新电子表格移动到该文件夹​​,它应该默认继承该文件夹的共享。再次使用驱动器API删除原始电子表格。由于所有用户和脚本都在特定的文件夹ID中查找名为X的文件,因此所有内容仍然正是他们期望找到它的地方,但修订历史记录已不复存在。

+0

谢谢。这有点麻烦,我有一两个挑战来实现,但我很欣赏理解这个用例,并将一些想法付诸实践。 – MartinK

0

不幸的是,Google Apps脚本没有提供从修订历史中删除项目的方法。

-3

对于Google文档,我设法通过复制文档来摆脱修订历史记录。不知道这是否也适用于电子表格。

+2

请检查对问题的意见。提问者表示,这会改变电子表格的ID并影响其脚本的功能。出于这个原因,这不适合他们。 – Ren

+0

MartinK希望以编程方式删除电子表格上的修订历史记录,而不是创建新的电子表格。 – GTM

-2

将所有表格,恢复到第一个版本,然后粘贴德电子表格:)

+0

复制这些值。另外,不会删除历史记录。 –

+0

删除历史记录是因为您恢复到第一个审阅并替换它 – Beto

+0

也许行为已更改,但它并未替换历史记录,只粘贴值而不是公式。 –

-2

这是一个很好的解决方案,我发现:
只是单纯地遵循这个步骤:

1.复制您的电子表格文件
2.删除第一个
3.重命名第二个

我每天都在使用这个技巧。

它适用于每个谷歌文档。 让我知道你是否使用过。

+0

对不起,没有。正如在对原始问题的评论中所提到的,外部工作表通过ID来引用这张表。它会打破其他脚本来做到这一点。 – MartinK

+0

然后你的问题是评论问题的细节,你应该编辑它不评论我的朋友。 –