Kolom pembaruan otomatis di Google Spreadsheet yang menunjukkan tanggal modifikasi terakhir


37

Mencoba mencari cara untuk membuat pembaruan dua kolom untuk menampilkan stempel waktu pembaruan terakhir. Saya menyadari bahwa dok menunjukkan cap waktu modifikasi terakhir, tetapi kami memiliki banyak klien yang mengakses dan menyesuaikan dokumen pada saat yang sama. Jadi permintaan ini dimasukkan. Saya akui saya belum melakukan pengkodean, jadi ini diluar saya.

Myanda telah memposting sesuatu yang sepertinya berada di jalur yang benar, tetapi kami tidak yakin bagaimana menerapkannya untuk kebutuhan kami:

Stempel Waktu Google Spreadsheet?


Akan membantu jika Anda dapat menautkan kami ke dokumen, atau memberikan contoh dokumen tentang apa yang Anda cari. Saya dapat mengubah jawaban saya yang lain sesuai, tetapi saya tidak yakin persis apa yang Anda tanyakan. Apakah Anda hanya perlu satu sel yang diperbarui dengan stempel waktu yang menunjukkan kapan seluruh spreadsheet diperbarui?
OnenOnlyWalter

Hai, Onen. Apa yang kami cari adalah, di kolom 2, setiap baris diperbarui dengan stempel waktu kapan pun sel di baris mereka diperbarui. Sayangnya saya tidak dapat memposting dokumen karena ini rahasia. Tapi itu berisi 21 kolom dan 60 baris. Apakah ini membantu?
RichGonzalez

Mengerti, biarkan saya melihat kode asli saya dan kembali kepada Anda :)
OnenOnlyWalter

Sangat menghargai Onen!
RichGonzalez

Jawaban:


36

Oke, ini versi modifikasi kode di jawaban saya sebelumnya:

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

Apa yang dilakukan adalah meraih baris sel apa pun yang diubah dan memberikan stempel waktu ke kolom kedua dari baris tertentu.

Untuk menerapkan, yang perlu Anda lakukan adalah masuk ke spreadsheet dan klik Tools> Script Editor. Di halaman editor yang dihasilkan, cukup tempel ini di sana. Karena ini adalah onEdit()fungsi, itu harus berfungsi tanpa harus menambahkan apa pun ke sel spreadsheet Anda, cukup tempel ke editor dan simpan.

Untuk cap waktu, saya mengatur format ke MM / hh / tttt dan meninggalkan waktu. Jika Anda ingin mengubahnya, Anda bisa mengubah penggunaan Utilities.formatDate.


Onen, ini bekerja dengan sempurna! Terima kasih banyak!
RichGonzalez

1
Senang mendengarnya! Dapatkah Anda menandai jawaban ini dengan tanda centang kemudian :) Saya akan mengatakan bahwa itu adalah agar orang lain dapat mengetahui solusi ini berfungsi, tetapi itu juga karena saya ingin poinnya: P
OnenOnlyWalter

Akan melakukan. Ini pasti berhasil. Satu pertanyaan lanjutan. Tidak ada yang dipuji. Mengubah ke PST tampaknya tidak mengubahnya ke waktu Pacific Standard, tetapi EST berfungsi. Apakah java membaca PST sebagai singkatan yang berbeda. Dan apakah ada cara untuk menampilkan waktu sebagai waktu 12 jam vs waktu militer?
RichGonzalez

1
cap waktu tidak bekerja untuk saya. Dengan saya "20yy-MM-dd HH: mm" bekerja sebagai gantinya. Saya pikir; harus huruf kecil atau tidak berfungsi (kecuali bulan Januari yang merupakan kasus ketika ini ditulis, ahahahah).
Riccardo

1
Perhatikan bahwa menggunakan "DD" untuk .formatDate()akan memberi Anda "Hari dalam tahun" - mis. 365 untuk 31 Desember. Anda mungkin menginginkan "dd". Anda dapat melihat daftar lengkap nilai format tanggal di sini: docs.oracle.com/javase/7/docs/api/java/text/…
Dan Nguyen


4

Saya harap ini tidak masalah untuk diletakkan di sini. Di bawah ini adalah modifikasi dari fungsi di atas tetapi untuk melakukannya untuk baris (baris 9) daripada kolom. Mencari tahu bagaimana menggunakan tugas kolom itu sangat membuat frustasi tetapi akhirnya menjadi sangat sederhana. Terima kasih kepada OnenOnlyWalter untuk kode aslinya:


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

Ini sepertinya bekerja cukup baik untuk saya. Terima kasih telah memperbaiki kesalahan baris 8 @ OnenOnlyWalter.
Zlatty

Karena jam pengguna bisa tidak akurat, apakah ada cara standar untuk mendapatkan cap waktu yang akurat di sisi server?
Sim

@Sim Google Apps Script menjalankan sisi server. Waktu yang Anda dapatkan adalah dari server.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.