我已经搜寻并发现了我想要的。我已经对发现的东西进行了一些修改,并且它起作用了。但是,当我在C列中的不同表中进行编辑时,它会在数据表中运行OnEdit()。我不想要那个,我无法停止。
我只希望它监视"数据"表。对于C3范围:C5000或C3:C Lastrow,这是理想的。
不应超过5000行。function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var data_sheet = ss.getSheetByName("Data");
var editRange = ss.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var range = data_sheet.getRange("C3:C5000");
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight();
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth();
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd)
{
RefreshImport2();
}
}
您可以使用onEdit(e)
的事件对象e
检索几个信息进行编辑。事件对象的详细信息在这里。那么这个示例脚本呢?在此样本中,
当您在电子表格上编辑单元格时,如果表格名称,列和行分别为 Data
, C
和 3 <= row <= 5000
,则运行RefreshImport2()
。
示例脚本:
function onEdit(e) {
if (
e.source.getSheetName() == "Data" &&
e.range.columnStart == 3 &&
e.range.columnEnd == 3 &&
e.range.rowStart >= 3 &&
e.range.rowEnd <= 5000
) {
RefreshImport2();
}
}
如果我误解了您的问题,对不起。
编辑:
您可以通过再添加一个if语句来做到这一点。在第1 if语句中,当表名称为 Data
时使用它。在第2 if语句中,当名称为 Data Entry
时使用它。
function onEdit(e) {
if (
e.source.getSheetName() == "Data" &&
e.range.columnStart == 3 &&
e.range.columnEnd == 3 &&
e.range.rowStart >= 3 &&
e.range.rowEnd <= 5000
) {
RefreshImport2();
}
if (e.source.getSheetName() == "Data Entry") {
// do something
}
}
我的理解正确吗?