Perbaikan Tanggal pada Google Sheets Akibat Beda Format Lokalisasi Indonesia

Dalam Google Sheet, permasalahan yang sering penulis temui adalah terkait tanggal. Terutama ketika mengganti setting lokasi dan perhitungan dari United State ke format Indonesia.

Belum lagi terkait timezone, seringkali penulis mengalami kesalahan perhitungan.

Gambar di bawah ini adalah contoh kesalahan identifikasi tanggal, yang hari dianggap sebagai bulan, dan bulan sebagai hari. Sehingga yang berhasil di deteksi (meskipun sebenarnya salah) mengalami rataan kanan, sedangkan yang gagal di deteksi tetap rataan kiri.



Oleh karena itu, untuk mudahnya, berikut ini adalah contoh kode Apps Script untuk mengubah letak tanggal menjadi bulan dan sebaliknya:
function isValidDate(d) {
  if ( Object.prototype.toString.call(d) !== "[object Date]" )
    return false;
  return !isNaN(d.getTime());
}

function convertDate(sDate) {
  if (isValidDate(sDate)) {
    var timeZone = Session.getScriptTimeZone();
    var month = sDate.getDate();
    var day = sDate.getMonth() + 1;
    var year = sDate.getFullYear();
    var hh=sDate.getHours();
    var mm=sDate.getMinutes();
    var ss=sDate.getSeconds();
 
    if(hh==0)sDate = Utilities.formatDate(new Date(year,month-1,day,hh,mm,ss), timeZone, "dd/MM/yyyy");
    else sDate = Utilities.formatDate(new Date(year,month-1,day,hh,mm,ss), timeZone, "dd/MM/yyyy HH:mm:ss");
  }else{
    var timeZone = Session.getScriptTimeZone();
    var tm=sDate.split(" ");
    var nn=tm[0].split("/");
    var year=parseInt(nn[2]);
    var month=parseInt(nn[1]);
    var day=parseInt(nn[0]);
    if(tm.length==1){
      sDate = Utilities.formatDate(new Date(year,month-1,day), timeZone, "dd/MM/yyyy");
    }else{
      nn=tm[1].split(":");
      var hh=nn[0];
      var mm=nn[1];
      var ss=nn[2];
      sDate = Utilities.formatDate(new Date(year,month-1,day,hh,mm,ss), timeZone, "dd/MM/yyyy HH:mm:ss");
    }    
  }
  return sDate;
}

function indonesianDate()
{
  var target = SpreadsheetApp.openById("iddatagooglesheet");
  var ss=target.getSheetByName("Peserta Tugas Akhir Semester Ganjil TA 2022-2023");
  var data=ss.getRange("A2:BO").getValues().map(function(row,index){
    if(row[0]!=""){
      if(row[51]!="")row[51]=convertDate(row[51]);
      if(row[52]!="")row[52]=convertDate(row[52]);
      if(row[53]!="")row[53]=convertDate(row[53]);
    }
    return (row[0]!="")?row:null}).filter(function(cellData){return cellData != null;});

  ss.getRange(2,1,data.length,data[0].length).setValues(data);
}

Dimana data di atas, penulis simpan di Google Sheets dengan nama sheet "Peserta Tugas Akhir Semester Ganjil TA 2022-2023", yang setelah kode di atas dijalankan, konversi tanggal menjadi seperti tampak pada gambar di bawah ini:


Penggunaan fungsi timezone, dikarenakan data tanggal yang disimpan di Google Sheets memang sesuai waktu lokal Indonesia sebelumnya.

Komentar



Postingan populer dari blog ini

Kumpulan Source Code Greenfoot

Algorithma Coretan Abstrak dengan HTML5 Canvas

Game TicTacToe dengan Greenfoot

Cara Membuat Halaman HTML Sederhana

Kode Greenfoot Game Snake Sederhana

Honeycomb Style Wallpaper dengan HTML5 Canvas

Ganti Kartu ATM BNI yang Rusak

Tips Agar Website Anda Segera di Terima oleh Google Adsense dan di-Monetize

Selamatan Latar Glundengan Bubuk Banyuwangi

Menggunakan JSON di Netbeans 8.2