【发布时间】:2021-02-15 21:27:01
【问题描述】:
首先,我是初学者。我试图在 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());
}
【问题讨论】:
-
是的,范围类永远不会等于字符串。
-
这三个
spreadsheet.getRange('B1').activate(); spreadsheet.getActiveRangeList().setValue(""); spreadsheet.getRange('A1').activate();归结为e.range.getSheet().getRange(1,2).setValue('');
标签: javascript google-apps-script google-sheets