首页 > 解决方案 > Google 应用程序脚本 onChange 无法将触发器对象传递给变量

问题描述

这篇文章已关闭,但我无法在其他地方找到类似的问题。

我正在尝试制定一个脚本,该脚本将隐藏 onChange() 触发器中的行。当一个单元格变为“0”时,我希望该单元格所在的行被隐藏。我第一篇文章的评论告诉我,从 onChange 传递的对象不包含范围。是否有解决此问题的解决方法?

我的电子表格有一个用于后端的输入表和一个用于发送到客户端的前端的输出表。我需要一个 onChange 触发器,以便当数据进入前端时,它可以很好地格式化以通过电子邮件发送给客户端。最重要的是,我需要隐藏空 ('0) 行。

我是新手,刚刚学习,所以我写的内容不起作用,因为 onChange 对象不包含范围。谢谢你。

function onChange(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Client");
  var cell = e.range;
  var VALUE = cell.getValue(); 
  if(VALUE == 0){
        sheet.hideRow(cell);
  }
}

我也试过:

function onChange(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Client");
  var cell = e.getValue(); 
  if(cell == 0){
        sheet.hideRow(cell);
  }
}

标签: google-apps-scriptonchange

解决方案


onChange 触发器没有返回范围值。这是事件对象的样子。

{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}

另外请记住 onChange 需要一个可安装的触发器。

onChange 事件对象


推荐阅读