Javascript 关于谷歌工作表的最后修改日期,这个谷歌脚本代码有什么问题?

Javascript 关于谷歌工作表的最后修改日期,这个谷歌脚本代码有什么问题?,javascript,datetime,if-statement,google-apps-script,google-sheets,Javascript,Datetime,If Statement,Google Apps Script,Google Sheets,我是一个完全的初学者,只是想制作一个我的家人可以用来做预算的界面。我唯一正在努力解决的是某些单元格最后修改日期的自动化问题。每当我将代码作为附加组件运行时,它只会修改第一条语句中指定的第7列,即使我将代码输入第10、11、15列,等等。似乎忽略了其他“else-if”语句 function onEdit(e) { var row = e.range.getRow(); var col = e.range.getColumn(); if(col === 5,6 &&

我是一个完全的初学者,只是想制作一个我的家人可以用来做预算的界面。我唯一正在努力解决的是某些单元格最后修改日期的自动化问题。每当我将代码作为附加组件运行时,它只会修改第一条语句中指定的第7列,即使我将代码输入第10、11、15列,等等。似乎忽略了其他“else-if”语句

function onEdit(e) {
  var row = e.range.getRow();
  var col = e.range.getColumn();
  
  if(col === 5,6 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,7).setValue(new Date());
  } 
  else if(col === 10,11 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,12).setValue(new Date());
  } 
  else if(col === 15,16 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,17).setValue(new Date());
  } 
  else if(col === 20,21 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,22).setValue(new Date());
  } 
  else if(col === 25,26 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,27).setValue(new Date());
  } 
  else if(col === 30,31 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,32).setValue(new Date());
  } 
  else if(col === 35,36 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,37).setValue(new Date());
  } 
  else if(col === 40,41 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,42).setValue(new Date());
  } 
  else if(col === 45,46 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,47).setValue(new Date());
  } 
  else if(col === 50,51 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,52).setValue(new Date());
  } 
  else if(col === 55,56 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,57).setValue(new Date());
  } 
  else if(col === 60,61 && row > 3 && e.source.getActiveSheet().getName() === "2021" ){
    e.source.getActiveSheet().getRange(row,62).setValue(new Date());
  } 
}

相当于

if ( 6 ) {
    ...
}
其中if语句始终为true,因为
6
是真实值

var col=1;//让我们以1为例
如果(列===5,6){
log('matchesfirst if condition');
}
如果(6){
log('匹配第二个if条件');
}
如果(列==5){
log('匹配第三个if条件');

}
缩短代码和删除重复字符串的另一种方法

function onEdit(e) {
      var row = e.range.getRow(),
          col = e.range.getColumn(),
          arrOfCols = [5,10,15,20,25,30,35,40,45,50,55,60];
    
      if (row > 3 && e.source.getActiveSheet().getName() === "2021") {
        if (arrOfCols.indexOf(col)>-1) e.range.offset(0,2).setValue(new Date());   
        if (arrOfCols.indexOf(col-1)>-1) e.range.offset(0,1).setValue(new Date())
      }
    }
if(arrOfCols.indexOf(col)>-1)
-此条件将检查当前列是否在
arrOfCols
列(5,10,15,20,25,30,35,40,45,50,55,60)列表中-如果是,则向右偏移两列并写入timeshtamp
e.range.offset(0,2).setValue(new Date())


'如果(arrOfCols.indexOf(col-1)>-1)'-此条件将检查当前列是否在
arrOfCols
列列表(6,11,16,21,26,31,36,41,46,51,56,61)中-如果,则向右偏移一列并写入timeshtamp
e.range.offset(0,1).setValue(新日期())

我很惊讶它竟然做了些什么,因为
col===5,6
肯定做不到你期望它做的事情。也许您的意思是
(col==5 | | col==6)
?另一种方法是使用循环
(让我=5;我也成功了,谢谢你!非常感谢!我不太明白,但它成功了!!我也不太明白。我只是想知道你想做什么。你可能想看看它,我承认它有点神秘,但我想你是在想意思
,但它没有。onEdit触发器函数可以n很难开始工作。如果通过从另一个函数运行来提供事件对象,则可以运行它们。但我通常通过编辑工作表和使用电子表格.toast()并将事件日志写入其中一个单元格来运行它们。这是一个有趣的运算符,需要学习,因为很多时候我都希望使用indexOf()获取索引同时检查逻辑,但我不想运行两次
indexOf()
方法,因为OneEdit简单触发函数必须在30秒或更短的时间内完成,因此每个函数调用都对您不利。它起作用了!感谢您的详细解释。
function onEdit(e) {
      var row = e.range.getRow(),
          col = e.range.getColumn(),
          arrOfCols = [5,10,15,20,25,30,35,40,45,50,55,60];
    
      if (row > 3 && e.source.getActiveSheet().getName() === "2021") {
        if (arrOfCols.indexOf(col)>-1) e.range.offset(0,2).setValue(new Date());   
        if (arrOfCols.indexOf(col-1)>-1) e.range.offset(0,1).setValue(new Date())
      }
    }
function onEdit(e) {
  const sh = e.range.getSheet();
  const cA1 = [5,6,10,11,15,16,20,21,25,26,30,31,35,36,40,41,45,46,50,51,55,56,60,61]
  const cA2 = [7,7,12,12,17,17,22,22,27,27,32,32,37,37,42,42,47,47,52,52,57,57,62,62]
  const idx = cA1.indexOf(e.range.columnStart);
  if( sh.getName() == "2021" && e.range.rowStart>3 && ~idx ) {
    sh.getRange(e.range.rowStart, cA2[idx] ).setValue(new Date());
  }
}