如何打印更改前的值?(google 脚本)

how to print the value before it was changed?(google script)

如果在使用 Google 脚本时值发生变化,我想在它旁边的单元格中记录变化。触发器被测试,但只保存更改后的值,而不是更改前的值。我需要修复哪里才能获得更改前的值?

function onEdit1()
{
  var sheet = SpreadsheetApp.getActiveSheet();
  if (sheet.getName() == "sheet1") //"order data" is the name of the sheet where you want to run this script.
  {
    var actRng = sheet.getActiveRange();
    var editColumn = actRng.getColumn();
    var rowIndex = actRng.getRowIndex();
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
    var aCol = headers[0].indexOf("A") + 1;
    var usdCol = headers[0].indexOf("USD") + 1;
    var rmbCol = headers[0].indexOf("RMB") + 1;
    
    var changedData = sheet.getRange(rowIndex, usdCol).getValues();
    var logData = sheet.getRange(rowIndex, aCol).getValues();
    
    if (aCol > 0 && rowIndex > 1 && editColumn == usdCol)
    {
      if (!sheet.getRange(rowIndex, aCol).isBlank())
      {
        sheet.getRange(rowIndex, aCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경" + "/" + logData);
      }else{
        logData = Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경됨" + " / ";
        // sheet.getRange(rowIndex, aCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경됨" + " / ");
      }
    }
  }
}

要在单元格更改之前获取单元格的值,您可以使用 on edit 触发器。

如果编辑单个单元格,事件对象可能包含 valueoldValue 属性。

以下是一个非常简单的示例,它将旧值记录到已编辑单元格右侧的单元格中。

function onEdite(e){
   if(e.oldValue) e.range.offset(0,1).setValue(e.oldValue);
}
  • 如果单元格被清除,value 属性 将是 undefined
  • 如果单元格为空,oldValue 属性 将是 undefined
  • 如果编辑了多个单元格(range 属性 包含多个单元格),这两个属性都将是 undefined