google-apps-script - 如何在 Google 表格 onEdit 触发器中获取范围
问题描述
我试图写一个简单的编辑功能:
function onEdit(e) {
var row = parseInt(e.range.getRow())
if(row > 19){
//This doesn't work because its reading a strig instead of a number. Who knows why
var rng = e.source.getRange(21,1,1,6)//.getValues()[0].join('').length
e.source.toast(rng.getValue())
if (length===0){
e.source.getRange(row,8).setBackground('white')
} else {
e.source.getRange(row,8).setBackground('red')
}
}
}
我得到了这个错误:
例外:参数(字符串、数字、数字、数字)与 SpreadsheetApp.Spreadsheet.getRange 的方法签名不匹配。
我实际上想这样做:
var rng = e.source.getRange(row,1,1,6).getValues()[0].join('').length
但即使是数字 21 现在也是一个字符串。这就像它自己的奇异世界,其中一些数字是字符串。我什至做了一个偏执的 parseInt。这是一个全新的世界。
我曾经让这个问题出现在问题的顶部。我没有太多的礼仪或做法,但我今天早上在这个问题上看到了这一点。
我必须告诉你,这些答案都不是补救措施。问题中的关键限定符是 onEdit 触发器上症状的出现,并且知道事件对象 e.source 不是工作表,而是其他一些对象。这就是为什么它是强制的。此外,考虑到它的松散类型和所有内容,javascript 可以强制执行也很奇怪。知道第二个,现在很明显我有错误的对象。这就是问题的答案。否则,获取范围。不太难。两种不同的 getRanges,一种在未记录的对象上。很难占卜。
解决方案
推荐阅读
- python - 使用 django rest 框架对测试提出错误请求
- javascript - 如何从谷歌表格将多个图表添加到 1 个谷歌幻灯片中
- vb.net - 如何加入跳过最后 2 个元素的字符串列表
- python - 将 .kv 类转换为 .py 类
- java - 正则表达式检查字符串是数字还是单词“all”
- powershell - “IIS:当文件已存在时无法创建文件。Exception.Message”通过 SSL 证书和 powershell 创建 https 绑定时
- postgresql - PostgreSQL 表 --data-only 转储占用表大小的两倍以上
- ksqldb - 如何获取 ksqldb 表的当前状态?
- linux - boost::multiindex 和继承
- typescript - 如何限制打字稿中的枚举字符串值