使用 e.range 获取起始行
Getting a Starting Row with e.range
我在 Google Sheets 上使用了一个脚本,它在单元格旁边的单元格的值被设置时在单元格上创建时间戳。如果删除旁边单元格的值,它会清除日期。
但是,它正在影响整个 sheet。 我只希望此代码从第 18 行开始运行。
我对编码还很陌生。我做了一些研究,但仍然无法弄清楚。我定义了一个名为 StartRow 的变量,并尝试在我的 if 语句 中使用它,然后在我的 loop 中使用它"e.range.rowStart" 但它多次触发了日期。
有人可以就我可能需要更改或添加的内容向我提供反馈吗?提前致谢!
这是我使用的代码:
function onEdit(e) {
var sheet = ["Sheet1"];
var ss = SpreadsheetApp.getActiveSheet();
var StartRow = 18; //(defined but not sure where or if I should use it)
var InputCol = 6;
var OutputCol = 7;
if (sheet.indexOf(ss.getName()) == -1 || e.range.columnStart != InputCol) return;
var val = ss.getRange(e.range.rowStart, e.range.columnStart).getValue();
if (val) {
var date = new Date();
for (var i = e.range.rowStart; i <= e.range.getLastRow(); i++)
ss.getRange(i, OutputCol).setValue(date);
} else
ss.getRange(e.range.rowStart, OutputCol, e.range.getLastRow() - e.range.rowStart + 1).clearContent();
}
试试这个:
function onEdit(e) {
//e.source.toast('entry');
const sh = e.range.getSheet();
if (sh.getName() == 'Sheet1' && e.range.rowStart > 18 && e.range.columnStart == 6) {
if (e.value) {
e.range.offset(0, 1).setValue(new Date());
} else {
e.range.offset(0, 1).setValue('');
}
}
}
我在 Google Sheets 上使用了一个脚本,它在单元格旁边的单元格的值被设置时在单元格上创建时间戳。如果删除旁边单元格的值,它会清除日期。
但是,它正在影响整个 sheet。 我只希望此代码从第 18 行开始运行。
我对编码还很陌生。我做了一些研究,但仍然无法弄清楚。我定义了一个名为 StartRow 的变量,并尝试在我的 if 语句 中使用它,然后在我的 loop 中使用它"e.range.rowStart" 但它多次触发了日期。
有人可以就我可能需要更改或添加的内容向我提供反馈吗?提前致谢!
这是我使用的代码:
function onEdit(e) {
var sheet = ["Sheet1"];
var ss = SpreadsheetApp.getActiveSheet();
var StartRow = 18; //(defined but not sure where or if I should use it)
var InputCol = 6;
var OutputCol = 7;
if (sheet.indexOf(ss.getName()) == -1 || e.range.columnStart != InputCol) return;
var val = ss.getRange(e.range.rowStart, e.range.columnStart).getValue();
if (val) {
var date = new Date();
for (var i = e.range.rowStart; i <= e.range.getLastRow(); i++)
ss.getRange(i, OutputCol).setValue(date);
} else
ss.getRange(e.range.rowStart, OutputCol, e.range.getLastRow() - e.range.rowStart + 1).clearContent();
}
试试这个:
function onEdit(e) {
//e.source.toast('entry');
const sh = e.range.getSheet();
if (sh.getName() == 'Sheet1' && e.range.rowStart > 18 && e.range.columnStart == 6) {
if (e.value) {
e.range.offset(0, 1).setValue(new Date());
} else {
e.range.offset(0, 1).setValue('');
}
}
}