首页 > 解决方案 > 我可以在 Google 表格中简化我的脚本吗?

问题描述

我已经使用脚本构建了一个 Google 表格,以便在编辑时自动为表格上的某些事件添加时间戳。

其中两个计时器仅用于对两个特定单元格的第一次编辑进行计时:

function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "SUBARU" ) { 
var r = s.getActiveCell();
if( r.getColumn() == 3 ) { 
var nextCell = r.offset(0, 19);
if( nextCell.getValue() === '' ) 
nextCell.setValue(new Date());
}
}
}

两个额外的计时器时间任何实例两个其他单元格被编辑:

function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "SUBARU" ) { 
var r = s.getActiveCell();
if( r.getColumn() == 9 ) { 
var nextCell = r.offset(0, 15);
nextCell.setValue(new Date());
}
}
}

当三个特定条目发生在一个特定单元格中时,其他三个计时器会计时:

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "SUBARU" ) { 
 var r = s.getActiveCell();

 if( r.getColumn() == 5 ) {  
        var nextCell = r.offset(0, 20);
  if( r.getValue() === "3 - Menu Ready")
    nextCell.setValue(new Date()).setNumberFormat('dd-MM-yyyy HH:mm:ss');
  }
  }
  }

我的问题是每张纸有 7 个脚本,使用这些脚本有 4 张纸(所以总共运行了 28 个脚本)。我的 Google 报价是同时运行 30 个脚本。谁能想到我可以简化这些脚本以更快地运行或组合任何脚本以便在任何给定时间运行更少的方法?

任何帮助将不胜感激!!!

标签: google-sheetsscripting

解决方案


我对此的建议是将所有逻辑分组到一个“onEdit”函数中。

这是我处理它的代码方法/建议:

if(s.getName() == "SUBARU") {
  //put the logic to handle sheet SUBARU
} else if(s.getName() == "ABC") {
  //put the logic to handle sheet ABC
} else if(s.getName() == "DEF") {
  //put the logic to handle sheet DEF
}

推荐阅读