gpt4 book ai didi

google-apps-script - 使用 GAS 为 Google 电子表格编写 'Undo' 函数

转载 作者:行者123 更新时间:2023-12-04 06:32:32 29 4
gpt4 key购买 nike

目前没有undo()电子表格/工作表/范围类中的 Google Apps 脚本函数。在问题追踪器上打开了几个问题,我现在只能找到一个(我不知道 Triaged 是什么意思):here .

有使用 DriveApp 和修订历史的建议解决方法,但我环顾四周并没有找到任何东西(也许它被掩埋了?)。无论如何,一个 undo()函数对于这么多不同的操作来说是非常必要的。我只能想到一种解决方法,但我一直无法让它工作(数据的存储方式,我不知道它是否可能)。这是一些伪 -

function onOpen () {
// Get all values in the sheet(s)
// Stringify this/each (matrix) using JSON.stringify
// Store this/each stringified value as a Script or User property (character limits, ignore for now)
}

function onEdit () {
// Get value of edited cell
// Compare to some value (restriction, desired value, etc.)
// If value is not what you want/expected, then:
// -----> get the stringified value and parse it back into an object (matrix)
// -----> get the old data of the current cell location (column, row)
// -----> replace current cell value with the old data
// -----> notifications, coloring cell, etc, whatever else you want
// If the value IS what you expected, then:
// -----> update the 'undoData' by getting all values and re-stringifying them
// and storing them as a new Script/User property
}

基本上,当电子表格打开时,将所有值存储为脚本/用户属性,并且仅在满足某些单元格条件时才引用它们。想要撤消时,获取存储在当前单元格位置的旧数据,并将当前单元格的值替换为旧数据。如果不需要撤消该值,则更新存储的数据以反射(reflect)对电子表格所做的更改。

到目前为止,我的代码已经失败了,我认为这是因为当对象被字符串化和存储时嵌套数组结构丢失了(例如,它没有正确解析)。如果有人写过这种函数,请分享。否则,有关如何编写此内容的建议将很有帮助。

编辑 : 这些文件是令人难以置信的静态。行数/列数不会改变,数据的位置也不会改变。如果可能的话,为临时修订历史实现 get-all-data/store-all-data-type 函数实际上将满足我的需求。

最佳答案

当我需要保护工作表但允许通过侧边栏进行编辑时,我遇到了类似的问题。我的解决方案是有两张床单(一张隐藏)。如果您编辑第一个工作表,这将触发 onEdit 过程并从第二个工作表重新加载值。如果您取消隐藏和编辑第二个工作表,它会从第一个工作表重新加载。完美运行,并且非常有趣地删除大量数据并观看它自我修复!

关于google-apps-script - 使用 GAS 为 Google 电子表格编写 'Undo' 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391376/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com