首页 > 解决方案 > 如何使在 Google Apps 脚本中创建的自定义函数对 Google 表格中单元格背景的更改作出反应?

问题描述

我有这个函数,它返回指向单元格背景颜色的十六进制代码。到目前为止还可以,但我需要它对指向单元格的背景颜色的变化做出反应。实际上,每次单元格的背景颜色发生变化时,我都必须再次调用该函数,以便它注意到背景颜色已经改变。有什么方法可以让这个函数对指向单元格背景的变化做出反应?

  function color(input) {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var activeRange = SpreadsheetApp.getActiveRange();
  var formula = activeRange.getFormula();
  var address = formula.substr(7,2);

  var cell = ss.getRange(address); 
  var result = cell.getBackground(); 
  return result;
}

标签: google-apps-scriptgoogle-sheets

解决方案


onEdit() 不是由背景更改触发的,但事实证明 onChange 是并且 changeType 是 FORMAT

这是事件对象的副本:

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

onChange 事件对象

但是,如果您在此处找到自定义函数的意思,我认为没有办法通过自定义函数来利用这一点

尝试这个:

function onMyChange(e) {
  if(e.changeType == 'FORMAT') {
    SpreadsheetApp.getActive().toast(SpreadsheetApp.getActiveRange().getA1Notation());
  }
}

推荐阅读