如何合并两个onEdit,这样我就可以在同一工作表上运行两个脚本?



我知道可能有很多关于同样事情的帖子,但我一点也不明白。光是看这些我就一整天没睡。我对剧本一无所知,过去几个小时我一直在死记硬背。

我只是需要帮助合并两个onEdit脚本在一起,因为我已经读到一个工作表只能运行一个onEdit脚本。

我的第一个脚本(我从在线复制粘贴的)是基于特定值自动隐藏一行:

function myFunction() {

}
var SHEET = "2022";
var VALUE = "Cancelled/Removed";
var COLUMN_NUMBER = "6"
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
if(SHEET == activeSheet.getName()){
var cell = ss.getActiveCell()
var cellValue = cell.getValue();
if(cell.getColumn() == COLUMN_NUMBER){
if(cellValue == VALUE){
activeSheet.hideRow(cell);
};  
};
};
}

当我在单元格中输入值时,这是第二个自动输入准确时间的脚本:

function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "2022" ) { //checks that we're on Sheet1 or not
var r = s.getActiveCell();
if( r.getColumn() == 1 ) { //checks that the cell being edited is in column A
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) //checks if the adjacent cell is empty or not?
nextCell.setValue(new Date());
}
}
}
如果有人能帮我这个,如果可能的话,用最简单的方式。这些东西大部分我都不懂。

最简单的选择就是将它们组合成一个函数。这样的:

function onEdit(e) {
var SHEET = "2022";
var VALUE = "Cancelled/Removed";
var COLUMN_NUMBER = "6"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
if(SHEET == activeSheet.getName()){
var cell = ss.getActiveCell()
var cellValue = cell.getValue();
if(cell.getColumn() == COLUMN_NUMBER){
if(cellValue == VALUE){
activeSheet.hideRow(cell);
}}}
if( activeSheet.getName() == "2022" ) { //checks that we're on Sheet1 or not
var r = activeSheet.getActiveCell();
if(r.getValue() != ""){ 
if( r.getColumn() == 1 ) { //checks that the cell being edited is in column A
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) //checks if the adjacent cell is empty or not?
nextCell.setValue(new Date());
}}}}

注意:我添加了if(r.getValue() != ""){,以便它只在相邻单元格中放置日期,如果您实际上在单元格中放置值。如果你想让它更新日期,即使你只是删除一些东西,你会想要摆脱这一行和一个}在最后。

最新更新