Google Dokümanlar E-Tabloları satırındaki "son güncellenen" hücreyi otomatik olarak nasıl ayarlayabilirim?


21

Google Dokümanlar E-Tabloları satırındaki "son güncellenen" hücreyi otomatik olarak nasıl ayarlayabilirim?

Bu satır son değiştirildiği zaman hücrelerin değeri otomatik olarak ayarlanacak bir sütun oluşturmak istiyorum. Mümkün mü? Bunu nasıl yaparım / ayarlamak için hangi seçeneği kullanırım?

MS Excel için bir geçici çözüm görüyorum, ancak Google Dokümanlar'ın benzer bir şeye sahip olması gerektiğini düşünüyorum, değil mi? (parmak çarpı işareti)

Büyük bir sayfayı düzenleyen birden fazla kişimiz var. Düzeltme geçmişini görebiliriz, ancak "son güncellenen" tarihler sütununa sahip olsaydık daha iyi olurdu.


Denedin mi? Çalışırsa , lütfen böyle işaretleyin, bkz. Webapps.stackexchange.com/faq#howtoask .
Jacob Jan Tuinstra

Yanıtlar:


20

Bir hücre düzenlendiğinde yakalamak için bir Google Apps Komut Dosyası eklemeyi deneyebilir ve farklı bir hücreye zaman damgası ekleyebilirsiniz. İşte benzer bir önceki yanıt: Google E-tablo Zaman Damgası?

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);
   };
 };
}

iyi görünüyor ben bir deneyin verecek
cwd


14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())satırdaki hücreler her değiştiğinde formül yeniden hesaplanır. denklemdeki "x" ile bir hata garanti edilir. ki bunun karşılığında tarihi döndürür.


5
Bu ilginç bir kluge.
ale

1
Şimdiye kadar gördüğüm en güzel çözüm :)
mafonya

5
Anlayabildiğim kadarıyla, bu gerçekten işe yaramıyor. Açık olmak gerekirse, işe yarıyor, ancak belirli satırlar için güncellenmiyor. Bunu koyduğumda ve birden çok satır boyunca sürüklediğimde, sayfadaki herhangi bir şeyi düzenlediğimde, tüm satırlar yeniden hesaplanır ve güncellenir.
nhgrif

1
Vaov! Benim için çalıştı. Kısaltılmış bir versiyon: = iferror (SUM (A2: O2) + "x", bugün ()) ve sürükleyerek satır numaralarını otomatik olarak güncelledi.
Ilya Evdokimov

1

Bu benim senaryom, son sütuna bu bilgileri koymak:

  1. Hücreye yerleştirin (değiştirdiğiniz satır için son hücrede = son sütun) - GMT -3'te tarih, aynı diğer TZ'ye koymak isterseniz, eşzamanlı saat diliminde -3'ü değiştirin. Tarihi otomatik olarak varsayılan TZ'nize koymak istiyorsanız, bunu değiştirmeniz yeterlidir:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. Değiştiren Hücre + Kullanıcısına bir Açıklama ekleyin.

  3. Bir şeyi güncellediğinizde bir açılır pencere görünür. Yalnızca ActiveUser'da görünür.

    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

Başvurulan hücre değiştirildiğinde yeni bir Tarih yazan bir işlev oluşturdum. Bu durumda hücre değeri DOĞRU veya YANLIŞtır, ancak herhangi bir değere düzenleyebilirsiniz.

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

1

Sütun numarasını kodlamak yerine, başlığı kullanarak sütunu bulan ve özel bir saat dilimi kullanan bir sürüm:

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'yi kullanmak için saat dilimini UTC olarak değiştirmeniz yeterlidir.


-4

Tek bir hücreye "Son güncelleme tarihi:" yazın ve yanındaki hücreye "= now ()" yazın! Bu işi yapmalı!


1
Bu, yalnızca hücre başına çalışır, soruda belirtildiği gibi satır başına
çalışmaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.