Javascript 来自一张图纸的事件将时间戳转储到另一张图纸上

Javascript 来自一张图纸的事件将时间戳转储到另一张图纸上,javascript,google-apps-script,Javascript,Google Apps Script,我需要在事件来源的另一张表上创建一个操作 例如,当编辑/更改“数据”表中的任何单元格时,在“其他”表中转储时间戳(在同一电子表格中)。如果这有助于加快代码速度,“数据”表将至少始终编辑单元格1,1,即使其值相同,因为其他内容会自动转储数据并重新写入整个“数据”表 主要的问题是,我不知道要将条件语句与什么值进行比较,因为我不知道see中会更改什么值。见下文 // Dumps the timestamp of the last time the "Data" sheet was edited fun

我需要在事件来源的另一张表上创建一个操作

例如,当编辑/更改“数据”表中的任何单元格时,在“其他”表中转储时间戳(在同一电子表格中)。如果这有助于加快代码速度,“数据”表将至少始终编辑单元格1,1,即使其值相同,因为其他内容会自动转储数据并重新写入整个“数据”表

主要的问题是,我不知道要将条件语句与什么值进行比较,因为我不知道see中会更改什么值。见下文

// Dumps the timestamp of the last time the "Data" sheet was edited
function onEdit(e){
  var dataSheetLastColumn = thisSpreadsheet.getSheetByName("Data").getLastColumn();
  var dataSheetLastRow = thisSpreadsheet.getSheetByName("Data").getLastRow();
  var dataSheetEvent = e.source.getSheetByName("Data").getRange(1, 1, dataSheetLastRow, dataSheetLastColumn);

  // puts a time-stamp on another sheet
  var theOtherSheet = thisSpreadsheet.getSheetByName("Other");
  theOtherSheet.getRange(2, 1).setValue(new Date());
}
试试这个:

function onEdit(e) {
  if(e.range.getSheet().getName()=='Other'){return;}  
  e.source.getSheetByName('Other').getRange(2,1).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy HH:mm:ss"));
}
注意:此事件仅在用户编辑时发生


除了触发事件之外,您没有遗漏任何内容。公式更新和程序更新?不。用户编辑?是的。可能是重复的。我按照你的要求编辑了我的问题。但它与您提供的链接不同。该链接显示如何与另一张图纸中的值进行比较以进行操作。我不知道会有什么价值观。我只是想在工作表发生变化时发生一些事情。可能会有更好的建议副本。我的观点是,如果需要捕获编程编辑,则需要使用基于时间的触发器并将当前状态与存储状态进行比较。或者只是修改另一个函数来调用编辑处理程序。好的。。。在我最初的问题中,我说过,每当“数据”表上发生变化时,它就会在“其他”表上加上时间戳。因为所有这些表格都在同一个电子表格中,所以无论我在任何电子表格中做了什么更改,它都是有效的。但是,我只想在“数据”表更改时使用它。好的,我现在明白了。。。源事件适用于所有图纸。我想我需要在使用之前先将事件分配到工作表中。但它看起来像是查看了电子表格中的所有内容。天哪。。。。非常感谢。是,给定项目中的所有脚本都可以访问电子表格中的所有工作表。
    function onEdit(e) {
      if(e.range.getSheet().getName()!='Data' ) {return;}
      e.source.getSheetByName('Other').getRange(2,1).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy HH:mm:ss"));
    }