来自一个工作表转储时间戳的事件在另一工作表上

时间:2019-03-27 23:44:45

标签: javascript google-apps-script

我需要在事件来自的另一张纸上创建一个操作。

例如,当“数据”表中的任何单元格被编辑/更改时,将时间戳保存在“其他”表中(在同一电子表格中)。如果它有助于使代码更快,那么即使它具有相同的值,“数据”工作表至少也将始终编辑单元格1,1,因为其他操作会自动转储数据并重写整个“数据”工作表。

主要问题是我不知道将条件语句与之比较的值,因为我不知道看到的值会改变。见下文。

// 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());
}

1 个答案:

答案 0 :(得分:1)

尝试一下:

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"));
    }