こんにちは。

function onEdit(e){
  var SHEET_ = e.source.getSheetByName("rireki");
  SHEET_.appendRow([e.oldValue]);
}

スクリプト実行時にoldValueの値を見る事で、
スプレッドシートのセルの値を編集した時に、
編集する前はどのような値だったのかを"rireki"シートに残したいです。

セルの値を編集した時は、oldValueが期待した通りに記録されますが、
セルの値を[delete]ボタンで削除すると、oldValueはundefinedになってしまいます。

セルの値を[delete]ボタンで削除した際にも、deleteする前の値を知りたいのですが、
それはどのようにすればいいのでしょうか。

簡潔ではありますが、質問は以上になります。

---- 追記 ----

Tanaike様から、教えていただいたページを参考に、
試してみたコードで、一応自分のやりたい事は可能になりました。

以下のコードになります。

function onEdit(e){
  var SHEET = e.source.getActiveSheet();
  var SHEET_NAME = SHEET.getName()
  var RANGE = SHEET.getActiveRange();
  var VALUE = RANGE.getValue();
  var COL = RANGE.getColumn();
  var ROW = RANGE.getRow();


  var LOG_SHEET_NAME = "rireki";
  var LOG_SHEET = e.source.getSheetByName(LOG_SHEET_NAME) || e.source.insertSheet(LOG_SHEET_NAME);
  var _LOG_DATA = LOG_SHEET.getDataRange().getValues();

  Logger.log(_LOG_DATA);
  var LOG_INDEX = (_LOG_DATA.findIndex(function(x){return (x[0] == SHEET_NAME) && (x[1] == ROW) && (x[2] == COL)})) + 1;

  if( LOG_INDEX >= 1){
    LOG_SHEET.getRange(LOG_INDEX,5).setValue(_LOG_DATA[LOG_INDEX - 1][3]);


    if(typeof e.value === 'string'){
      LOG_SHEET.getRange(LOG_INDEX ,4).setValue(e.value);
    }else if(typeof e.value === 'object'){
      LOG_SHEET.getRange(LOG_INDEX ,4).setValue("");
    }
    else if(typeof e.value === 'undefined'){
      LOG_SHEET.getRange(LOG_INDEX ,4).setValue("");
    }else{
    }

  }else{
    LOG_SHEET.insertRowBefore(1);
    LOG_SHEET.getRange(1,1,1,5).setNumberFormats([["@","@","@","@","@"]]).setValues([[SHEET_NAME,ROW,COL,VALUE,""]]);
    LOG_INDEX = 1;
  }
  //LOG変更、終了。

  e.oldValue = LOG_SHEET.getRange(LOG_INDEX , 5).getValue();

  //以下、やりたい事。
}

if (!Array.prototype.findIndex) {
  Array.prototype.findIndex = function(predicate) {
    if (this === null) {
      throw new TypeError('Array.prototype.findIndex called on null or undefined');
    }
    if (typeof predicate !== 'function') {
      throw new TypeError('predicate must be a function');
    }
    var list = Object(this);
    var length = list.length >>> 0;
    var thisArg = arguments[1];
    var value;

    for (var i = 0; i < length; i++) {
      value = list[i];
      if (predicate.call(thisArg, value, i, list)) {
        return i;
      }
    }
    return -1;
  };
}