5

这似乎应该很容易,但我似乎无法让我的任何小测试实现工作。最终目标是创建一个仅在编辑特定范围内的单元格时运行的函数。为了实现这一点,我正在创建一个在每次编辑时运行的函数,但首先检查编辑单元格的范围是否在某个范围内,如果这是真的,则只执行其余的代码,否则,它只是立即结束。

在我看来,这样做的第一步是找出如何返回已编辑单元格的范围。我尝试了各种测试。

这是当前版本,我通过编辑电子表格对其进行了测试:

function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var eRange = e.range;
var message = eRange.getA1Notation();
ss.toast(message);
}

(输出:吐司没有出现/什么都没有发生)

我在这里发布了大约 10 个其他版本,但我意识到这没有帮助。

我已经设法在我的 toast 消息中返回 [object Object] 和 [undefined],所以我知道我的 toast 函数没有犯一些愚蠢的错误。

e.range 不返回一个范围吗?那是我出错的地方吗?如果它返回一个范围,我是否应该能够使用范围内的任何方法,就像我使用了类似“ss.getRange("A1").someMethod()" 一样?还是有一些我不明白的区别?

好的,我意识到我在这里问了几个不同的问题——我只是想更清楚地了解我的思维过程,以防它帮助你纠正我的错误。一个简单的问题是:我可以使用什么样的命令或方法来返回已编辑单元格的范围?

很抱歉问了这么一个基本的问题。我真的很害怕有人会输入正确的搜索词组合,答案就会出现在结果的顶部......但我似乎无法自己找到它,所以我在这里。我已经尝试了 StackOverflow 和旧 Google Groups 支持论坛中的许多代码片段,以及我自己的许多尝试。我看到人们在这里就我的最终目标提出了很多类似的问题——只有在特定范围内的单元格被编辑时才运行 onEdit 函数——但答案都更加复杂,而且似乎是针对每个具体情况量身定制的,但他们没有不适合我的。我确定答案就在那里,但我已经连续三个晚上一直在寻找,发现很多类似的问题被问到,而且只是可以' 我似乎无法自己实施这些建议。感谢您对我的耐心,非常感谢您提供的任何答案!

4

1 回答 1

5

这是从文档中获取(并稍作修改)的代码:

function onEdit(event){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  r.setComment("Last modified: " + (new Date())+' by '+Session.getActiveUser());
  ss.toast('Last cell modified = '+r.getA1Notation()+' by '+Session.getActiveUser());
}
于 2012-10-21T06:00:37.113 回答