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


37

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

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

Google Spreadsheet Timestamp?


あなたが私たちをドキュメントにリンクするか、あなたが探しているもののサンプルドキュメントを提供できるなら、それは助けになるでしょう。それに応じて他の回答を変更できますが、あなたが何を求めているのか正確にはわかりません。スプレッドシート全体が更新されたときを示すタイムスタンプで更新される単一のセルが必要ですか?
OnenOnlyWalter

ねえオネン。探しているのは、列2で、各行のセルが更新されるたびに、各行がタイムスタンプで更新されることです。ドキュメントは残念ながら機密情報なので投稿できません。ただし、21列60行です。これは役立ちますか?
リッチゴンザレス


おねんね!
リッチゴンザレス

回答:


36

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

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


オネン、これは完璧に機能します!どうもありがとうございます!
リッチゴンザレス

1
それを聞いてうれしい!あなたは、チェックマークでこの答えをマークすることができます:)私はそれが他の人がこのソリューションの作品を知ることができるようにということでしたが、私はポイントたいcuzのそれもだと言うでしょう:P
OnenOnlyWalter

しましょう。それは間違いなく動作します。1つのフォローアップの質問。asめ言葉はありません。PSTに変更しても太平洋標準時に変更されないようですが、ESTは機能します。JavaはPSTを別の略語として読み取りますか。また、時間を12時間と軍用の時間として表示する方法はありますか?
リッチゴンザレス

1
タイムスタンプが機能しません。代わりに「20yy-MM-dd HH:mm」が機能します。私は 'ddと思う; 小文字にする必要がありますまたはそれは動作しません(これが書かれた1月がahahahahであった場合を除く)。
リッカルド

1
「DD」を使用すると「.formatDate()年の日」が得られることに注意してください。たとえば、12月31日の365です。おそらく「dd」が必要です。日付形式の値の完全なリストは、docs.oracle.com
Dan Nguyen


4

ここに置いてもいいと思います。以下は上記の関数の修正ですが、列ではなく行(行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
  };
 };

これは私にとって非常にうまくいくように思えました。@OnenOnlyWalterの行8エラーを修正していただきありがとうございます。
ズラティ

ユーザーの時計は不正確になる可能性があるため、サーバー側の正確なタイムスタンプを取得する標準的な方法はありますか?
シム

@Sim Google Apps Scriptはサーバー側で実行されます。取得する時間はサーバーからです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.