对于我的工作,我制作了一个电子表格,可以跟踪†他各自的机器的所有不同任务的维护日期。
我的脚本运行良好,但是我注意到它可以在工作表中的所有页面上运行。
所以我一直在寻找解决方案,但似乎无法为我找到适合自己的解决方案。
我一直在使用的脚本:
function onEdit(e) {
if (e.range.getColumn() == 6) {
e.range.offset(0, 3).setValue("")}
};
function onEdit2(e) {
if ([10].indexOf(e.range.columnStart) != -1) {
e.range.offset(0, 1).setValue(newDate()).setNumberFormat("dd.MM.yyyy | HH:mm")};
}
有了这个,我就最接近完成任务了(我认为)
function Autoclear(e){
var sheet = event.source.getActiveSheet(e);
if(sheet.getName()=='Onderhoud'){
var editedCell = sheet.getActiveCell();
if (e.range.getColumn() == 6) {
e.range.offset(0, 3).setValue("")}
}
};
function Timestamp(e){
var sheet = event.source.getActiveSheet(e);
if(sheet.getName()=='Onderhoud'){
var editedCell = sheet.getActiveCell();
if ([10].indexOf(e.range.columnStart) != -1) {
e.range.offset(0, 1).setValue(new Date()).setNumberFormat("dd.MM.yyyy | HH:mm")};
}
}
保存时这不会给我错误,但是运行时我确实会收到错误消息。 (ReferenceError:“ e”未定义)
主要目标是使脚本在1个特定页面上运行:“ Onderhoud”
如果有一些格式不正确或信息遗留的信息,我将非常高兴提供。
答案 0 :(得分:0)
onEdit触发器不应手动运行。当触发器通过电子表格中的任何编辑运行触发器时,电子表格服务将传递e对象。
答案 1 :(得分:0)
尝试使用此脚本,而不是您拥有的脚本
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var ind = [6, 10].indexOf(e.range.columnStart);
if (sheet.getName() == 'Onderhoud' && ind > -1) {
if (ind === 0) {
e.range.offset(0, 3).setValue(null)
} else {
e.range.offset(0, 1).setValue(new Date()).setNumberFormat("dd.MM.yyyy | HH:mm")
};
};
}
如阿米特(Amit)所述,请编辑指定的列(而不是从脚本编辑器运行脚本)以检查脚本是否有效。