在我的脚本中,我想将刚刚输入到单元格中的值与该单元格中之前的任何值(如果有)进行比较。
根据 https://developers.google.com/apps-script/guides/triggers/events,如果 (a) 编辑的范围是单个单元格并且 (b) 该单元格之前实际上包含价值。但这个断言在实践中并没有得到证实,至少在我的尝试中没有得到证实:相反,oldValue 的值始终是未定义的。
我选择了一个包含单词“罗马”的单元格,然后输入单词“巴黎”并按回车键。
出于调试目的,我的 onEdit 函数包含以下脚本行: .
function onEdit(event) {
...
const valueBeforeEdit = event.oldvalue;
const valueAfterEdit = event.value;
...
outputDebuggingMsg("valueAfterEdit = " + valueAfterEdit +
"\n valueBeforeEdit = " + valueBeforeEdit);
...
*outputDebuggingMsg 是我编写的一个函数,用于将有用的数据写入“调试消息”表的连续行,以便我稍后可以查看一长串此类数据。
麻烦的是,调试输出信息总是如下:
valueAfterEdit = Paris
valueBeforeEdit = undefined (I expected it to say "Rome" not "undefined")
无论我在 Chrome [版本 131.0.6778.108(官方版本)(64 位)] 或 Edge [版本 131.0.2903.86(官方版本)(64 位)] 中尝试此操作,都会发生同样的情况。
您有一个错误的拼写错误,这就是为什么输出始终为
undefined
,请更改您的 function valueBeforeEdit = event.oldvalue to oldValue
。
从此:
const valueBeforeEdit = event.oldvalue;
对此:
const valueBeforeEdit = event.oldValue;
您可以在此链接上阅读有关简单触发器和可安装触发器的更多信息 - 事件对象。