(f)剧本作品(e)不

时间:2015-04-13 15:32:55

标签: google-apps-script google-sheets

我有这两个脚本在不同的页面上做同样的事情,但是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());
}

2 个答案:

答案 0 :(得分:1)

我认为你不能在谷歌剧本中有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());
}

类似的东西,但未经测试。 我想如果我正确地阅读你的代码,你正在寻找不等于工作表名称,可能最好将其改为等于。

答案 1 :(得分:1)

Munkey的直觉是正确的。您不能在同一个项目中拥有多个onEdit()。而且&#39; e&#39;不是随机字母(可以被任何其他字母替换),而是代表“事件对象”。您可以阅读有关here的更多信息。解决方案确实包括合并&#39;将两个脚本合二为一。试一试:

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());
}