通过功能更改单元格时的触发功能?

时间:2015-06-26 12:27:30

标签: google-apps-script

单元格的函数为Object=AVERAGE()并且已更改,但只有在手动更改单元格时,=SUM()才会起作用。

如何为此案例创建触发器?

1 个答案:

答案 0 :(得分:0)

可能有更好的方法来执行此操作,但如果您使用的是公式,则用户可能会在某处进行编辑,从而影响结果。

例如,如果你有公式:=SUM('A2:A50'),那么实现目标的一种方法是验证编辑事件是否发生在该范围'A2:A50'内。

以下是可能有用的示例代码:

function onEdit(e){
  var editedRange = e.range

  if (rangeContainsAnotherRange(yourRange,editedRange)){
    // Do whatever you want
  }

}

// Maybe not the most practical way to verify if one range is inside another
function rangeContainsAnotherRange(widerRange, editedRange){
  var editRow = editedRange.getRow();
  var editCol = editedRange.getColumn();

  var widerRangeRowStart = widerRange.getRow();
  var widerRangeRowEnd = widerRangeRowStart + widerRange.getHeight();
  var widerRangeColStart = widerRange.getColumn();
  var widerRangeColEnd = widerRangeColStart + widerRange.getWidth();

  return (editRow >= widerRangeRowStart && editRow <= widerRangeRowEnd 
      && editCol >= widerRangeColStart && editCol <= widerRangeColEnd)

}

希望有所帮助。

对于上面的示例,在onEdit函数上,变量yourRange将是范围'A2:A50'

Obs: Reference for the second function