列2を自動更新して最後の更新のタイムスタンプを表示する方法を見つけようとしています。ドキュメントには最後の変更のタイムスタンプが表示されますが、多くのクライアントがドキュメントに同時にアクセスして調整しています。それで、このリクエストは投入されました。コーディングをしていないことは認めますので、これは私を超えています。
Myandaは正しい道に沿ったものを投稿しましたが、私たちのニーズに合わせてそれを実装する方法がわかりません。
さて、ここに私の以前の答えのコードの修正版があります:
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
の使用を変更するだけです。
参考までに、受け入れられた答えはDD
を日形式として使用します。これにより、「312」のようになります。つまり、312日目です。
私はこれを使用しました:
"yyyy-MM-dd, hh:mm:ss"
これを取得するには:
2013-11-12, 03:43:20
ここに置いてもいいと思います。以下は上記の関数の変更ですが、列ではなく行(行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
};
};