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

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

Menyikapi Ucapan AI Pejabat

Peringatan: Aksi Penipuan Skimming Melalui Aplikasi Android M-Pajak

Ketika Pengelola Basis Data Terabaikan

Kebodohan Karyawan Menyalahkan Sistem

Apps Script untuk Cetak Sertifikat

Checking Data yang Belum Dimasukkan dalam Daftar Menggunakan Query Google Sheet

Kumpulan Source Code Greenfoot

Menyembunyikan Failed Load Images di Blogger

Apps Script untuk Mengirimkan Notifikasi Approval