Google E-Tablo’daki son güncelleme tarihini gösteren otomatik güncelleme sütunu


37

Son güncellemenin zaman damgasını göstermek için sütun iki otomatik güncellemeye sahip olmanın bir yolunu bulmaya çalışıyorum. Dokümanın son değişikliğin zaman damgasını gösterdiğini fark ediyorum, ancak doktora aynı anda erişen ve ayarlayan çok fazla müşterimiz var. Yani bu istek girildi. Kodlama yapmadığımı itiraf ediyorum, bu yüzden bu benim ötesimde.

Myanda doğru yol boyunca görünen bir şey yayınlamıştı, ancak bunu ihtiyaçlarımız için nasıl uygulayacağımızdan emin değiliz:

Google Elektronik Tablo Zaman Damgası?


Bizi belgeye bağlayabilir veya aradığınızı gösteren bir örnek belge sunmanız yardımcı olacaktır. Diğer cevabımı buna göre değiştirebilirim ama tam olarak ne sorduğunuzu tam olarak bilmiyorum. E-tablonun tümünün ne zaman güncellendiğini gösteren bir zaman damgasıyla güncellenen tek bir hücreye mi ihtiyacınız var?
OnenOnlyWalter

Selam Önen. Aradığımız şey, sütun 2'de, her satır ilgili satırındaki herhangi bir hücre güncellendiğinde zaman damgası ile güncellenir. Doktora maalesef gizli olduğu için gönderemiyorum. Ancak 21 sütun ve 60 satır içerir. Bu yardımcı olur mu?
RichGonzalez

Anladım, orijinal
koduma

Çok takdir Onen!
RichGonzalez

Yanıtlar:


36

Tamam, işte önceki cevabımdaki kodun değiştirilmiş bir versiyonu:

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

Bunun yaptığı, değiştirilen herhangi bir hücrenin sırasını kapar ve o özel sıranın ikinci sütununa bir zaman damgası atar.

Uygulamak için, tüm yapmanız gereken elektronik tabloya gidip tıklayın edilir Tools> Script Editor. Elde edilen editör sayfasında, bunu sadece buraya yapıştırın. Bu bir onEdit()fonksiyon olduğundan, e-tablonuzun hücrelerine başka bir şey eklemek zorunda kalmadan çalışması gerekir, sadece editöre yapıştırın ve kaydedin.

Zaman damgası için, biçimi MM / gg / yy olarak ayarlarım ve süreyi bıraktım. Değiştirmek istiyorsanız, sadece kullanımını değiştirebilirsiniz Utilities.formatDate.


Onen, bu mükemmel çalışıyor! Çok teşekkür ederim!
RichGonzalez

1
Duyduğuma sevindim! Bu cevabı bir onay işaretiyle işaretler misiniz :) Diğer insanların bu çözümün işe yaradığını bilmesi için öyle olduğunu söyleyebilirim, ama aynı zamanda şu noktalara da
değinmek

Yapacağım. Kesinlikle işe yarıyor. Bir takip sorusu. İltifat olarak hiçbir şey. PST'ye geçmek onu Pasifik Standart saatine değiştirmiyor gibi görünüyor, ancak EST çalışıyor. Java PST'yi farklı bir kısaltma olarak okur mu. Ve saati, askeri zamana karşı 12 saat gibi bir zaman olarak göstermenin bir yolu var mı?
RichGonzalez

1
zaman damgası benim için çalışmıyor. Benimle "20yy-AA-GG HH: mm" onun yerine çalışıyor. Bence 'dd; küçük harfli olmalı ya da çalışmamalı (bu, yazıldığı durumda olan Ocak olmadıkça, ahahaha).
Riccardo

1
"DD" yi kullanmanın " .formatDate()Yılda Gün" - (31 Aralık'ta 365) alacağına dikkat edin. Muhtemelen "dd" yi istiyorsunuz. Tarih formatı değerlerinin tam listesini burada bulabilirsiniz: docs.oracle.com/javase/7/docs/api/java/text/…
Dan Nguyen


4

Umarım buraya koymak iyidir. Aşağıda, yukarıdaki işlevin bir modifikasyonu var, ancak bunu sütunlar yerine bir satır (satır 9) için yapın. Sütun atamanın nasıl kullanılacağını bulmak çok sinir bozucuydu ancak son derece basitti. Orijinal kod için OnenOnlyWalter'e teşekkürler:


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

Bu benim için oldukça iyi görünüyordu. @ OnenOnlyWalter'ın 8. sıradaki hatasını düzelttin için teşekkürler.
Zlatty

Kullanıcı saatleri yanlış olabileceğinden, sunucu tarafında, doğru zaman damgası almanın standart bir yolu var mı?
Sim

@Sim Google Apps Komut Dosyası, sunucu tarafında çalışır. Alacağınız zaman sunucudan.
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.