GAS:很难测试 activecell 是否具有特定的范围名称

GAS: Having difficulty testing to see if activecell has a specific rangename

我有一个范围名称为 "source".
的源单元格 我有一些目标(非相邻)单元格,其范围名称为 "target1"、"target2"、"target3".

如果单元格 "source" 被更改,我希望将它的值复制到 3 个目标单元格中​​。

我遇到了第一个障碍,因为我不知道如何测试我是否正在编辑 "source" 单元格。

所有文档似乎都是关于命名范围而不是使用它们。

到目前为止我有...

function onEdit()
{
   var sh = SpreadsheetApp.getActiveSheet();
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var range = ss.getActiveRange();
   var C = range.getColumnIndex();
   var a = sh.getActiveCell();

   if( range == "LXbar1" )
   {
      SpreadsheetApp.getUi().alert('You are HERE!');
   }
}

修改后的代码:

function onEdit(e)
{
   var ss = SpreadsheetApp.getActiveSpreadsheet();  
   // Active range
   var eventRange = e.range;
   // Active range address
   var eventRangeA1 = eventRange.getSheet().getName() + "!" + eventRange.getA1Notation();
   // Comparison range name
   var sourceRange = ss.getRangeByName("rLXbar1");
   // Comparison range address
   var sourceRangeA1 = sourceRange.getSheet().getName() + "!" + sourceRange.getA1Notation();

   if (eventRangeA1 === sourceRangeA1)
   {
      // Target range name 
      var targetRange = ss.getRangeByName("rLamp08");
      targetRange.setValue(sourceRangeA1.value);
   }  
}

不要在 onEdit 触发器中使用 Active 元素,使用内置的 event object 它将确保它在编辑发生时始终使用实际选定的单元格。

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var eventRange = e.range;
  var sourceRange = ss.getRangeByName("source");
  var eventRangeA1 = eventRange.getSheet().getName() + "!" + eventRange.getA1Notation();
  var sourceRangeA1 = sourceRange.getSheet().getName() + "!" + sourceRange.getA1Notation();

  if (eventRangeA1 === sourceRangeA1) {
    SpreadsheetApp.getUi().alert("You are HERE!");
  } 
};