web-dev-qa-db-ja.com

最終更新日を表示するGoogleスプレッドシートの自動更新列

列2を自動更新して最後の更新のタイムスタンプを表示する方法を見つけようとしています。ドキュメントには最後の変更のタイムスタンプが表示されますが、多くのクライアントがドキュメントに同時にアクセスして調整しています。それで、このリクエストは投入されました。コーディングをしていないことは認めますので、これは私を超えています。

Myandaは正しい道に沿ったものを投稿しましたが、私たちのニーズに合わせてそれを実装する方法がわかりません。

Googleスプレッドシートのタイムスタンプ?

36
RichGonzalez

さて、ここに私の以前の答えのコードの修正版があります:

function onEdit(e) {
  // Your sheet params
  var sheetName = "MySheet";
  var dateModifiedColumnIndex = 2;
  var dateModifiedColumnLetter = 'B';

  var range = e.range; // range just edited
  var sheet = range.getSheet();
  if (sheet.getName() !== sheetName) {
    return;
  }

  // If the column isn't our modified date column
  if (range.getColumn() != dateModifiedColumnIndex) { 
    var row = range.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy, hh:mm:ss");
    var dateModifiedRange = sheet.getRange(dateModifiedColumnLetter + row.toString());
    dateModifiedRange.setValue(time);
  };
 };

これは、変更されたセルの行を取得し、その特定の行の2番目の列にタイムスタンプを割り当てます。

実装するには、スプレッドシートに移動し、Tools> Script Editorをクリックするだけです。結果のエディターページで、これをそこに貼り付けます。これはonEdit()関数であるため、スプレッドシートのセルに他のものを追加することなく機能し、エディターに貼り付けて保存するだけです。

タイムスタンプについては、フォーマットをMM/dd/yyに設定し、時間を残しました。変更したい場合は、Utilities.formatDateの使用を変更するだけです。

36
OnenOnlyWalter

参考までに、受け入れられた答えはDDを日形式として使用します。これにより、「312」のようになります。つまり、312日目です。

私はこれを使用しました:

"yyyy-MM-dd, hh:mm:ss"

これを取得するには:

2013-11-12, 03:43:20
8
Dan Nguyen

ここに置いてもいいと思います。以下は上記の関数の変更ですが、列ではなく行(行9)に対して行います。列の割り当ての使用方法を理解することは非常にイライラしましたが、非常に簡単になりました。元のコードについてOnenOnlyWalterに感謝します。


function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); // Get spreadsheet name 
    var r = s.getActiveCell(); // store active cell name in current spreadsheet 
  var cell1 = 9 // This is the row I want to put values
  if(r.getRow() != cell1) { // Ignores this row (where I put the dates)
    var column = r.getColumn();  // Get column # from active cell
    var time = new Date(); // Get date and time of last mod
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss"); // Format date and time
    SpreadsheetApp.getActiveSheet().getRange(cell1,column).setValue(time); // put in time in cell
  };
 };
4
user2023699