0

私が取得している値は変更後の値であるため、この関数はセルが終了するまでトリガーされないようです。変更前の値が必要ですが、実際に特定の列が編集された場合にのみ必要です。

ありがとうございました

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  var r = s.getActiveCell();
  var columnNum = r.getColumn(); 
  var msg;

  if (columnNum == 11) {

    var dateCell = s.getRange(r.getRow(), 11); 
    var v=dateCell.getValue();
    msg = 'Value= ' + v;
    Browser.msgBox (msg);

    //dateCell.setValue(v);

  }
}
4

3 に答える 3

0

私の知る限り、編集前にセルの値をキャプチャすることはまだ不可能です。

この問題を課題追跡システムでスター化することをお勧めします。現在、中優先度の拡張リクエストと見なされています。

于 2012-11-14T23:16:21.667 に答える
0

@AdamLスプレッドシートのリビジョン履歴にプログラムでアクセスする方法はありますか?

申し訳ありませんが、これは初心者の能力を超えていますが、私の質問は A B の問題の回避策の手がかりを保持している可能性があります。

@AB 別の可能な回避策時間ベースのトリガーを設定して、2 つの配列に入力することができます。編集をチェックしている列の現在のデータからの 1 つの配列と、同じデータの以前のスナップショットからの 1 つの配列。次に、ループを使用して、最後のトリガーイベント以降に値が変更されたかどうかをテストすることにより、変更された値 (ある場合) を判断できます。テストの値が変更された場合は、rowNumber() と colNumber() をプッシュし、同じデータの以前のインスタンスと現在のインスタンスの両方を新しい配列に取得する getValue() には、タイムスタンプ new Date() も含まれます。この新しい配列データを新しいシートまたはスプレッドシートに入力します。

onEdit 関数と組み合わせて使用​​すると、値の変更前後と、それらが発生したおおよその時間を確認できます。

時間ベースのトリガーは、毎分、毎時などに実行するように設定できます

于 2012-11-15T11:12:30.477 に答える