如何解决尝试更改为 onChange 后 onEdit 触发器坏了 参考
只需要快速了解为什么当我从 onEdit 更改为 onChange 时它破坏了脚本,我尝试了大约 2 天来找出问题所在,但仍然不知道我做错了什么,所以请耐心等待,我我确信在公共论坛上有很多令人头疼的问题,我为成为其中之一而提前道歉;我知道 Simple 和 Installable 触发器是不同的我只是不知道如何转换为新的“理想”格式
它应该在“RAW”表中寻找变化,然后在“Raw”和“Examples”表的顶部创建一行,并应用一些函数
当在示例中找到编辑时,它还会创建一个新行,我也在尝试找出 onChange 范围表示法
这是工作表的链接,请检查脚本,看看我做错了什么; https://docs.google.com/spreadsheets/d/1GKrS-5e6ArW8g8CXgFE_Tzow6PjDtYoEjzLCBg6cNrg/edit?usp=sharing
function createSpreadsheetopenTrigger(e) {
if (!e) {
throw new Error('Script Now running');
}
if (e.range.getA1Notation() !== 'A2') {
return;
}
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('myFunction')
.forSpreadsheet(ss)
.onopen()
.create();
}
sh.insertRowAfter(1);
sh.setRowHeight(2,21);
var freeze = sh.getRange("A2:C2");
freeze.copyTo(freeze,{
contentsOnly: false
});
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Examples");
sh.insertRowAfter(1);
sh.setRowHeight(2,21);
sh.getRange("A2").setFormula('=RAW!A3');
以前的样子;
function onEdit(e) {
if (!e) {
throw new Error('Script Now running');
}
if (e.range.getA1Notation() !== 'A2') {
return;
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("RAW");
sh.insertRowAfter(1);
sh.setRowHeight(2,21);
var freeze = sh.getRange("A2:C2");
freeze.copyTo(freeze,{contentsOnly:false});
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Examples");
sh.insertRowAfter(1);
sh.setRowHeight(2,21);
sh.getRange("A2").setFormula('=RAW!A2');
var freeze = sh.getRange("A2:C2");
freeze.copyTo(freeze,{contentsOnly:false});
}
解决方法
onEdit
和 onChange
触发器的工作方式不同,因此它们使用的事件对象具有不同的方法。
根据事件对象 documentation,onChange
触发器使用以下内容:
authMode
changeType
triggerUid
user
从本质上讲,从 onEdit
触发器切换时的主要问题是您仍在使用 range
。
参考
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。