javascript - 尝试根据同一行上另一个单元格的值变化擦除相应的单元格内容
问题描述
这是我第一次尝试使用 Javascript 在 GSheet 中创建等效的宏(我习惯于 Excel 中的 VBA 宏)。
我认为这个简短的 JS 脚本一旦绑定到我的 GSheet 的 onChange 事件就可以工作:
// 当 BD (56) 列中的单元格更改为值 0 时,如果 AR (44) 列中同一行上的相应单元格的值为“已批准”,则清除“已批准”字符串。
function onChange(e) {
if(e.range.columnStart === 56) {
if(e.value=='0' && e.range.offset(0,-12).value=='Approved'){
e.range.offset(0,-12).clearContent();
}
}
}
顺便说一句,我没有收到任何错误。当我在 BD 中手动将值更改为 0 时,AR 中的 Approved contentn 会保留。我希望我知道如何调试它。
非常感谢您的帮助!
解决方案
您的 onEdit() 不起作用的原因是value
Range 对象中没有参数。当你使用Range.offset(rowOffset, columnOffset)时,它会返回一个Range 对象,来获取你需要使用Range.getValue()的单元格的值
示例工作代码(带调试日志):
function onEdit(e){
Logger.log(e.range.columnStart);
Logger.log(e.value);
Logger.log(e.range.offset(0,-12).value);
Logger.log(e.range.offset(0,-12).getColumn());
if(e.range.columnStart === 56) {
if(e.value=='0' && e.range.offset(0,-12).getValue()=='Approved'){
e.range.offset(0,-12).clearContent();
}
}
}
执行日志:
- 请注意,当您尝试使用 获取列 AR 的值时
e.range.offset(0,-12).value
,该值为null
- 将其替换为
e.range.offset(0,-12).getValue()
以获取单元格的值
笔记:
您可以通过添加日志来调试触发器,然后检查执行选项卡。
推荐阅读
- java - 使用 Gson 将 JSON 数组解析为 Java 列表
- bash - 如何使用 grep 从 find 命令的输出中忽略/排除文件?
- database - 事务与存储过程
- javascript - 将 Angular 组件降级为 AngularJS
- python - 突出显示 MultiIndex DataFrame 上的 max/min - Pandas
- git - 为什么 git-flow 快速转发我的功能分支合并?
- c# - 如何将数据表拆分为多个表并增加 1 分钟延迟
- python - Keras 中 Conv1D 的行为(张量的维度)
- shared-libraries - 如何在运行路径标志中针对 $ORIGIN 指定共享库的目录?
- qt - 在Qt的一行中水平居中一个项目