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

Apps Script untuk Cetak Sertifikat

Jasa Penjadwalan Semester, UTS dan UAS Perguruan Tinggi menggunakan Google Sheet

Menambahkan Konfirmasi Email di Google Form

Template Gratis App Android Sederhana dengan Admob, Firebase dan In-app Purchase

Peringatan: Aksi Penipuan Skimming Melalui Aplikasi Android M-Pajak

Menambahkan Random Key sebagai ID Pembeda di Google Sheet dengan Apps Script

Menyikapi Ucapan AI Pejabat

Menyembunyikan Failed Load Images di Blogger

Kumpulan Source Code Greenfoot

Kebodohan Karyawan Menyalahkan Sistem