只是对 Rasmus 先前答案的可能问题的快速修复:
线上:
var rangeRowEnd = rangeRowStart + range.getHeight();
var rangeColEnd = rangeColStart + range.getWidth();
它正在添加(实际上它没有减去初始行和列。这导致范围比 1 行和 1 个整列的预期范围更大。只需在同一行中减去 1:
var rangeRowEnd = rangeRowStart + range.getHeight()-1;
var rangeColEnd = rangeColStart + range.getWidth()-1;
Rasmus Fuglsnag 的代码和更正应如下所示:
function onEdit(e)
{
var sheet = SpreadsheetApp.getActiveSheet();
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var range = sheet.getRange("B4:J6");
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight()-1;
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth()-1;
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd)
{
// Do your magic here
}
}
感谢Rasmus Fuglsnag提供了最简单的方法。我不敢相信有更好更简单的方法可以通过代码来做到这一点。