我需要对特定工作表(选项卡)中的特定单元格进行任何编辑/更改,以生成onEdit触发器。
我已经搜索并尝试了数十种潜在的解决方案,但似乎无法使它们中的任何一个起作用。
我特定的“编辑”单元格是“ H8”,它位于名为“土地”的工作表(标签)上
仅在此示例中,我希望触发器删除工作表“ test”上单元格“ A1”的内容
尝试#1:基于此链接:https://stackoverflow.com/a/48964929/11317736
function onEdit(e) {
if (e.range.getA1Notation() === 'Land!H8') {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('test').getRange('A1').clear();
}
}
错误代码: TypeError:无法从未定义中读取属性“ source”。 (第2行,文件“代码”)关闭
尝试#2:基于许多不同的帖子
function onEdit(e) {
var range = e.range;
var rangeEdit = e.range.getA1Notation();
if(rangeEdit == "Land!H8"){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('test').getRange('A1').clear();
}
}
错误代码: TypeError:无法从未定义中读取属性“ range”。
任何帮助将不胜感激
答案 0 :(得分:2)
尝试一下:
function onEdit(e) {
var sh=e.range.getSheet();
if(e.range.columnStart==8 && e.range.rowStart==8 && sh.getName()=="Land") {
//put your code here
e.source.toast('You enter a new value of ' + e.value);//remove this line
}else{
return;
}
}
请注意,如果没有创建自己的事件对象,则无法从脚本编辑器运行此功能。另一种方法是将其复制到脚本编辑器中,然后编辑名为“ Land”的工作表的单元格H8,以查看它是否对您有用。注意:进行修改需要您实际更改H8的值。
我已经对其进行了测试,并且可以正常工作。我想我应该提到,仅将e放入onEdit(e)并不会创建事件对象。
Straight from the range documentation page: