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:
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:
Komentar
Posting Komentar