【问题标题】:onEdit trigger broke after trying to change to onChange尝试更改为 onChange 后,onEdit 触发器中断
【发布时间】:2021-04-26 13:41:00
【问题描述】:

只是需要一些快速的监督,为什么当我从 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});   
}

【问题讨论】:

  • range 不适用于 onChange 事件对象。

标签: javascript function google-apps-script google-sheets onchange


【解决方案1】:

onEdit 和 onChange 触发器的工作方式不同,因此它们使用的事件对象具有不同的方法。

根据事件对象documentation,onChange 触发器使用以下内容:

  • authMode
  • changeType
  • triggerUid
  • user

基本上,从onEdit 触发器切换时的主要问题是您仍在使用range。

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多