Google apps script 如果选中/取消选中复选框,则应用程序脚本OneEdit可跨多个工作表添加/清除时间戳

Google apps script 如果选中/取消选中复选框,则应用程序脚本OneEdit可跨多个工作表添加/清除时间戳,google-apps-script,timestamp,Google Apps Script,Timestamp,除了从//3开始的底部部分之外,我已经完成了下面的脚本。初始部分适用于我列出的第一张工作表,如果选中复选框,则添加时间戳;如果未选中复选框,则清除时间戳。但是,它只在第一张纸上工作,我也需要它在列出的第二张纸上工作。数据在每张纸上的设置不同,所以我把它们分了出来。我非常感谢任何指导,我对应用程序脚本和学习非常陌生,因此我确信这是一个新手和愚蠢的错误: function onEdit(e) { var ss = SpreadsheetApp.getActiveSheet(); var

除了从//3开始的底部部分之外,我已经完成了下面的脚本。初始部分适用于我列出的第一张工作表,如果选中复选框,则添加时间戳;如果未选中复选框,则清除时间戳。但是,它只在第一张纸上工作,我也需要它在列出的第二张纸上工作。数据在每张纸上的设置不同,所以我把它们分了出来。我非常感谢任何指导,我对应用程序脚本和学习非常陌生,因此我确信这是一个新手和愚蠢的错误:

function onEdit(e) {
  
  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  //1.Change 'Sheet1' to match your sheet name  
  if (r.getColumn() == 1 && ss.getName()=='Sheet1') { // 2. If Edit is done in column 1 make change in column 4(D) then:
    var celladdress ='D'+ r.getRowIndex();
    if(r.getValue() !="" && r.getValue() !=" "){
      ss.getRange(celladdress).setValue(new Date()).setNumberFormat("MM/DD/YYYY hh:mm:ss");
    } else{
      ss.getRange(celladdress).clearContent();
}
//3.Change 'Sheet2' to to match your sheet name  
  if (r.getColumn() == 1 && ss.getName()=='Sheet2') { // 4. If Edit is done in column (G) then:
    var celladdress ='G'+ r.getRowIndex();
    if(r.getValue() !="" && r.getValue() !=" "){
      ss.getRange(celladdress).setValue(new Date()).setNumberFormat("MM/DD/YYYY hh:mm:ss");
    } else{
      ss.getRange(celladdress).clearContent();
    }
  }
}
  }
修改点:
  • 在您的脚本中,我认为可以使用用于搜索图纸名称的对象。
    • 在本次修改中,使用了
      var obj={Sheet1:“D”,Sheet2:“G”}
    • 例如,
      obj[“Sheet1”]
      返回
      D
      。这用于修改后的脚本
  • 关于复选框,还可以使用
    isChecked()
    检查复选框是否已选中
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
  • 在这种情况下,将使用事件对象。但是,如果您想在脚本编辑器中直接运行该函数,请按如下所示进行修改

    •   var r = e.range;
        var ss = r.getSheet();
      
    •   var ss = SpreadsheetApp.getActiveSheet();
        var r = ss.getActiveCell();
      
参考资料:

非常感谢!我是新来的,所以我不认为upvote对我有效,但这确实有效。@Chaz感谢您的回复和测试。我很高兴你的问题解决了。也谢谢你。
  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();