由于Google Apps Script ScriptDB 最近出现问题,我们最终在 ScriptDB 中发现了许多重复记录。
我们有一个从外部系统检索数据的应用程序,如果该数据尚不存在,则将其存储在 ScriptDB 中。但是由于 ScriptDB 最近出现的问题,检查是否存在失败。我们的脚本不断添加相同的数据。我们如何去清理重复项?我们只需要每个数据记录的一个副本。
由于Google Apps Script ScriptDB 最近出现问题,我们最终在 ScriptDB 中发现了许多重复记录。
我们有一个从外部系统检索数据的应用程序,如果该数据尚不存在,则将其存储在 ScriptDB 中。但是由于 ScriptDB 最近出现的问题,检查是否存在失败。我们的脚本不断添加相同的数据。我们如何去清理重复项?我们只需要每个数据记录的一个副本。
由于那个 appscript 错误,我也不得不重新创建许多 bd。我删除了整个 bd 并手动重新创建它,因为我不相信可能仍然损坏的条目。如果它不是很大,您可以将其转储到电子表格中并手动删除它们,然后重新创建 bd。它不仅仅是重复,您还可以拥有类似的对象,因为它们被重新创建,然后只有一个被更新。
如果您为数据库中的条目分配了自己的唯一 ID,那么您可以遍历所有可能的 ID,以查找具有超过 1 个条目的 ID。我不打算编写整个代码,但这是一个大致的大纲:
1. Generate an array of all possible IDs
2. For each ID in array, query ScriptDB for items with that ID
3. If results.length > 1, remove the extras
4. Goto 2
5. Finish
当然,这将花费超过 6 分钟的时间来处理 100 条记录,因此您需要一些代码来保存/加载状态。我使用 ScriptProperties 来保存我在数组中的位置。然后我有一个函数来确定我是否已经达到 5.5 分钟,此时我停止以避免“超过最大执行时间”错误。
如果您还没有使用唯一 ID,那么添加到您的数据库保存功能中会增加一些逻辑,以防止将来发生这种情况。