行のGoogle Docs Spreadsheetsに「最終更新」セルを自動的に設定するにはどうすればよいですか?


21

行のGoogle Docs Spreadsheetsに「最終更新」セルを自動的に設定するにはどうすればよいですか?

その行が最後に修正されたときにセルの値が自動的に設定される列を作成します。これは可能ですか?これをどのように行うか、これを設定するためにどのオプションを使用しますか?

私が見MS Excel用の回避策を私はGoogle Docsのは似たような、権利を持つべきだと思いますか?(指が交差した)

複数の人が大きなシートを編集しています。改訂履歴を見ることができますが、「最終更新日」の列があればもっといいでしょう。


やってみました?動作する場合は、そのようにマークしてください。webapps.stackexchange.com/faq # howtoaskを参照してください。
ジェイコブヤントゥインストラ

回答:


20

Google Apps Scriptを追加して、セルが編集されたときにキャプチャし、別のセルにタイムスタンプを追加できます。同様の以前の回答は次のとおり です。GoogleSpreadsheet Timestamp?

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 13 ) { //checks the column
     var nextCell = r.offset(0, 1);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
       time = Utilities.formatDate(time, "GMT", "HH:mm:ss");
       nextCell.setValue(time);
   };
 };
}

よさそうだ私はそれを試してみます
-cwd


14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())行のセルが変更されるたびに、数式が再計算されます。方程式に「x」を使用すると、エラーが保証されます。代わりに、日付を返します。


5
それは興味深いクルージュです。
エール

1
私が今まで見た中で最も美しいソリューション:)
mafonya

5
私が知る限り、これは実際には機能しません。明確にするために、機能しますが、特定の行については更新されません。これを入れて複数の行にドラッグし、シート上の任意の場所を編集すると、すべての行が再計算されて更新されます。
-nhgrif

1
うわー!それは私のために働いた。以下に短縮版を示します。= iferror(SUM(A2:O2)+ "x"、today())そしてドラッグすると、行番号が自動的に更新されます。
イリヤエヴドキモフ

1

これが私のスクリプトです。最後の列にこの情報を入れます:

  1. セルに挿入(最後のセル=変更する行の最後の列)-GMT -3の日付、他のTZに同じものを配置する場合は、コンカレントタイムゾーンの-3を変更します。デフォルトのTZに日付を自動的に入れたい場合は、これを修正するだけです:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. それを変更するCell + Userと共にコメントを挿入します。

  3. 何かを更新するとポップアップが表示されます。ActiveUserのみに表示されます。

    function onEdit(event)
    {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var actSht = event.source.getActiveSheet();
        var actRng = event.source.getActiveRange();
    
        var index = actRng.getRowIndex();
        var dateCol = actSht.getLastColumn();
        var lastCell = actSht.getRange(index,dateCol);
        var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    
        lastCell.setValue(date);
        lastCell.setComment("Ultima Modificacion: " + actRng.getA1Notation() +' por '+Session.getActiveUser());
        ss.toast('Ultima Modificacion = '+ actRng.getA1Notation()+' por '+Session.getActiveUser());
    }
    

1

参照セルが変更されたときに新しい日付を書き込む関数を作成しました。この場合、セルの値はTRUEまたはFALSEですが、任意の値に編集できます。

function WhenUpdated(cell1) {
  if(cell1){
    return new Date();
  }
  else return null;
}

1

以下は、列番号をハードコーディングするのではなく、ヘッダーを使用して列を検索し、カスタムタイムゾーンを使用するバージョンです。

function updateModified(options) {
  var sheet = SpreadsheetApp.getActiveSheet();
  if (options.sheetName && sheet.getName() != options.sheetName) {
    return;
  }

  var modifiedColumnName = options.modifiedColumnName || 'Modified';
  var header = sheet.getDataRange().offset(0, 0, 1).getValues()[0];
  var modifiedColumn;
  for (var i=0; i < header.length; i++) {
    if (header[i].trim() == modifiedColumnName) {
      modifiedColumn = i + 1;
      break;
    }
  }
  if (typeof modifiedColumn != 'number') {
    throw new Error("Can't find column with name: " + modifiedColumnName);
  }

  var activeCell = sheet.getActiveCell();
  if (activeCell.getColumn() == modifiedColumn) {
    return;
  }

  var modifiedCell = sheet.getRange(activeCell.getRow(), modifiedColumn);
  var formattedDate = Utilities.formatDate(new Date(), "America/Los_Angeles", "M/dd/yy HH:mm");
  modifiedCell.setValue(formattedDate);
}

function onEdit() {
  updateModified({sheetName: 'Jobs'});
}

UTCを使用するには、タイムゾーンをUTCに変更するだけです。


-4

1つのセルに「最終更新日:」と入力し、その隣のセルに「= now()」と入力するだけです!それは仕事をする必要があります!


1
これはセルごとにのみ機能し、質問に記載されている行ごとではなく、
1owk3y
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.