(f) 脚本有效 (e) 无效
(f) script works (e) doesnt
我有这两个脚本,它们只是在不同的页面上执行相同的操作,但是 f 脚本有效而 e 脚本无效,有帮助吗??
function onEdit(e) {
if (e.source.getActiveSheet().getName() !== "RS3 Points" ||
e.range.columnStart < 9 || e.range.columnStart > 35 ||
e.range.rowStart < 4 || e.range
.columnStart < e.range.columnEnd) return;
e.range.offset(0, 37 - e.range.columnStart).setValue(new Date());
}
function onEdit(f) {
if (f.source.getActiveSheet().getName() !== "OS Points" ||
f.range.columnStart < 6 || f.range.columnStart > 37 ||
f.range.rowStart < 4 || f.range
.columnStart < f.range.columnEnd) return;
f.range.offset(0, 39 - f.range.columnStart).setValue(new Date());
}
我不认为你可以在 google 脚本中有 2 个 onEdits。
如果您注释掉 f
函数,e
函数是否有效?
能否将它们放在一个 onedit 函数中作为解决方案。
function onEdit(e) {
if (e.source.getActiveSheet().getName() !== "RS3 Points" ||
e.range.columnStart < 9 || e.range.columnStart > 35 ||
e.range.rowStart < 4 || e.range
.columnStart < e.range.columnEnd) return;
e.range.offset(0, 37 - e.range.columnStart).setValue(new Date());
if (e.source.getActiveSheet().getName() !== "OS Points" ||
e.range.columnStart < 6 || e.range.columnStart > 37 ||
e.range.rowStart < 4 || e.range
.columnStart < e.range.columnEnd) return;
e.range.offset(0, 39 - e.range.columnStart).setValue(new Date());
}
类似的东西,但未经测试。
我认为如果我正确阅读了您的代码,您正在寻找不等于 sheet 名称,最好将其更改为等于。
Munkey 的直觉是正确的。同一项目中不能有多个 onEdit()。此外 'e' 不是随机字母(可以用任何其他字母代替)而是代表 'event object'。您可以阅读更多相关内容 here。解决方案确实包括 'merging' 将两个脚本合二为一。试一试:
function onEdit(e) {
var ind = ["RS3 Points", "OS Points"].indexOf(e.source.getActiveSheet()
.getName()),
startCol = [9, 6],
endCol = [35, 37],
offset = [37, 39];
if (ind === -1 || e.range.columnStart < startCol[ind] || e.range.columnStart > endCol[ind] ||
e.range.rowStart < 4 || e.range.columnStart < e.range.columnEnd) return;
e.range.offset(0, offset[ind] - e.range.columnStart)
.setValue(new Date());
}
我有这两个脚本,它们只是在不同的页面上执行相同的操作,但是 f 脚本有效而 e 脚本无效,有帮助吗??
function onEdit(e) {
if (e.source.getActiveSheet().getName() !== "RS3 Points" ||
e.range.columnStart < 9 || e.range.columnStart > 35 ||
e.range.rowStart < 4 || e.range
.columnStart < e.range.columnEnd) return;
e.range.offset(0, 37 - e.range.columnStart).setValue(new Date());
}
function onEdit(f) {
if (f.source.getActiveSheet().getName() !== "OS Points" ||
f.range.columnStart < 6 || f.range.columnStart > 37 ||
f.range.rowStart < 4 || f.range
.columnStart < f.range.columnEnd) return;
f.range.offset(0, 39 - f.range.columnStart).setValue(new Date());
}
我不认为你可以在 google 脚本中有 2 个 onEdits。
如果您注释掉 f
函数,e
函数是否有效?
能否将它们放在一个 onedit 函数中作为解决方案。
function onEdit(e) {
if (e.source.getActiveSheet().getName() !== "RS3 Points" ||
e.range.columnStart < 9 || e.range.columnStart > 35 ||
e.range.rowStart < 4 || e.range
.columnStart < e.range.columnEnd) return;
e.range.offset(0, 37 - e.range.columnStart).setValue(new Date());
if (e.source.getActiveSheet().getName() !== "OS Points" ||
e.range.columnStart < 6 || e.range.columnStart > 37 ||
e.range.rowStart < 4 || e.range
.columnStart < e.range.columnEnd) return;
e.range.offset(0, 39 - e.range.columnStart).setValue(new Date());
}
类似的东西,但未经测试。 我认为如果我正确阅读了您的代码,您正在寻找不等于 sheet 名称,最好将其更改为等于。
Munkey 的直觉是正确的。同一项目中不能有多个 onEdit()。此外 'e' 不是随机字母(可以用任何其他字母代替)而是代表 'event object'。您可以阅读更多相关内容 here。解决方案确实包括 'merging' 将两个脚本合二为一。试一试:
function onEdit(e) {
var ind = ["RS3 Points", "OS Points"].indexOf(e.source.getActiveSheet()
.getName()),
startCol = [9, 6],
endCol = [35, 37],
offset = [37, 39];
if (ind === -1 || e.range.columnStart < startCol[ind] || e.range.columnStart > endCol[ind] ||
e.range.rowStart < 4 || e.range.columnStart < e.range.columnEnd) return;
e.range.offset(0, offset[ind] - e.range.columnStart)
.setValue(new Date());
}