Arl*_*ory 3 google-sheets google-apps-script
我已经搜索并找到了我正在寻找的大部分内容。我对我发现的内容进行了一些修改,并且它有效......主要是。但是,当我在 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();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以获取一些信息,通过使用事件对象编辑e的onEdit(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();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我误解了你的问题,我很抱歉。
您可以通过再添加一个 if 语句来实现。在第一个 if 语句中,当工作表名称为Data. 在第 2 个 if 语句中,当工作表名称为Data Entry. 每个 if 语句不会相互干扰。
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
}
}
Run Code Online (Sandbox Code Playgroud)
我的理解正确吗?
| 归档时间: |
|
| 查看次数: |
4896 次 |
| 最近记录: |