创建多个函数onEdit(e)在一个脚本中工作



我下面的脚本作为一个独立的脚本工作-它将在单元格/列对面的触发单元格/列中添加日期和时间。也就是说,A列中任何表示TRUE的单元格在其相邻的B列中都有表示确切日期的单元格。,在任何时刻,列A中的单元格都被认为是TRUE。脚本将此保留为一个单独的更改。如果我要删除TRUE或将其更改为任何其他文本,B列中的数据将保持不变,直到我再次写入TRUE -这将迫使B列中的单元格用新的"TRUE"时刻的最新日期/时间覆盖之前的日期/时间。语句在a列中发出

现在,我想添加另一个onEdit函数,它在表2上工作,但是列引用编号不是1(正如您将在下面看到的,所有数字都是1,无论是正的还是负的),而是2。我不知道如何让两个单独的函数工作,当我单独列出它们时,具有相同的脚本结构,只有序列中的最后一个脚本工作,而第一个没有。

我希望我已经说得够清楚了;我不是一个程序员,在发布这个问题之前,我已经在教程、论坛等方面尽了最大的努力。我可以通过逆向工程别人的工作学得更好,而不是给我构建模块并告诉我去创造一些东西,但我很感激这方面的任何教育,这样我就可以为未来学习。

function onEdit(e) {
var aCell = e.source.getActiveCell(), col = aCell.getColumn(); 
if(col == 1) { //number of column(s) where you have a data
var adjacentCell = aCell.offset(-1,-1);
var newDate = Utilities.formatDate(new Date(), 
"GMT+1", "dd/MM/yyyy hh:mm:ss");
adjacentCell.setValue(newDate);
}}
function onEdit(e){
var ss = SpreadsheetApp.getActiveSheet();
//change to be your sheet name so the script only triggers on that sheet
if( ss.getName() == "Sheet1" ) { //checks that we're on the correct sheet
var r = ss.getActiveCell();
if(e.value != "TRUE") return;
e.source.getActiveSheet().getRange(e.range.rowStart,e.range.columnStart+1).setValue(new 
Date());
}
}

我认为你没有指定足够的条件来正常工作,但这是目前为止你所拥有的:

function onEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Sheet1' &&  e.range.columnStart == 1) {
e.range.offset(-1,-1).setValue(Utilities.formatDate(new Date(),"GMT+1", "dd/MM/yyyy hh:mm:ss"));
}
if(sh.getName() == 'Sheet1' && e.value == "TRUE") {
e.range.offset(0,1).setValue(new Date())
}
}

我想您需要进一步调试才能使其正常工作。

相关内容

最新更新