修改 e.range.getA1Notation() 以在 Google Apps 脚本中接受更广泛的输入

Modifying e.range.getA1Notation() to accept wider range of inputs in Google Apps Script

我正在使用 Google Apps 脚本在更新另一个单元格 (I16) 时使用单元格 (C6) 值更新活动 sheet 的名称。目前,当更新 I16 并按预期重命名 sheet 时,脚本可以正常工作。

但是,我希望输入的范围更宽,比如 A:J 那种范围,或者至少 A1:J104。我怎样才能做到这一点?

我也读过 但我不确定如何提取特定于此场景的信息。

我使用的脚本如下:

function onEdit(e) {

if(e.range.getA1Notation() !== 'I16') return;

var s = e.source.getActiveSheet();

s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().setName(s.getRange('C6').getValue());

}

如有任何帮助,我们将不胜感激。提前致谢!

编辑:使用脚本,会发生以下情况:

  1. 编辑单元格 I16 后,单元格 C6 的内容将通过公式更改。例如,当我在单元格 I16 中输入“002”时,单元格 C6 更新为“Report-002”,依此类推。
  2. 同时,脚本提取单元格 C6 中的字符串并相应地更新当前 sheet 的名称(即 sheet 现在命名为“Report-002”。

该脚本适用于此特定场景。但是,我想在更新范围更广的单元格时触发脚本,不仅仅是单元格 I16。理想情况下,如果我更新 sheet.

中的 any 单元格,我希望脚本为 运行

这是否有助于阐明我想要实现的目标?

尝试

function onEdit(e) {
  e.source.getActiveSheet().setName(e.source.getActiveSheet().getRange('C6').getValue());
}

更改 if 条件以考虑边界:

const [/*actual row*/ar, ac] = ['rangeStart','columnStart'].map(s => e.range[s])
const [/*row start*/rs, re, cs, ce] = [1,2,3,4];//C1:D2
if(ar >= rs && ar <= re && ac >= cs && ac <= ce){
// do stuff
}