首先,我是一个初学者。我试图在 Google 表格中进行一些自动化操作,但遇到了一个有趣但可能愚蠢的问题:如果更改另一个特定单元格中的值,如何删除唯一单元格或单元格组的内容?如果我更改单元格 A1 的值,我只想删除单元格 B1 中写入的内容仅。无论单元格 C1、C2、B2 或 A2 上发生什么,唯一重要的触发器是编辑单元格 A1。
我尝试通过使用 onEdit(e) 事件来解决这个问题,但返回的参数“e”不包含任何有关我可以用于比较的列或行的信息,即发现该版本是针对单元格 A1 进行的。这样,我没有找到任何可以用来解决我的问题的具体条件。
我的代码是:
function onEdit(e) {
var spreadsheet = SpreadsheetApp.getActive();
var range = e.range;
if (range == 'A1'){
spreadsheet.getRange('B1').activate();
spreadsheet.getActiveRangeList().setValue("");
spreadsheet.getRange('A1').activate();
}
}
正如我所注意到的,“range”永远不会等于“A1”,因为无论我编辑哪个单元格,e.range 方法都会返回“Range”:当我写入“potato”后代码返回 e 的值时在单元格中,这就是屏幕上显示的内容:
{ value=potato, authMode=LIMITED, range=Range, user=, source=Spreadsheet }
还有其他方法可以使用 onEdit 函数来完成我的这项任务吗?或者我应该使用另一个事件?有什么建议吗?
这是启发我使用 onEdit 函数的代码(它工作得很好):
function onEdit(e) {
// Set a comment on the edited cell to indicate when it was changed.
var range = e.range;
range.setNote('Last modified: ' + new Date());
}
最佳答案
同样的事情,用更少的函数调用大多数信息来自事件对象
function onEdit(e) {
if(e.range.columnStart==1 && e.range.rowStart==1) {//same as A1
e.range.offset(0,1).setValue('');//this is B1
}
}
关于javascript - 谷歌应用脚本: onEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66215630/