Postingan

Checking Data yang Belum Dimasukkan dalam Daftar Menggunakan Query Google Sheet

Gambar
Seringkali untuk urusan data, kita diminta untuk mengecek apakah data sudah dimasukkan atau belum. Biasanya keperluan ini untuk mengecek data terbaru. Misalnya mengecek apakah email siswa sudah masuk daftar atau belum Salah satu caranya adalah menggunakan Query formula berikut ini: =IFNA(QUERY(B2:B,"SELECT B WHERE B IS NOT NULL AND B<>'"&JOIN("' AND B<>'",QUERY(D2:D,"",0))&"'",0)) Di mana B dan D adalah kolom sheet yang implementasinya dapat dilihat pada video dibawah ini: Sedangkan jika diperlukan highlight data untuk menandai data mana saja yang belum masuk dapat menggunakan Conditional Formatting Google Sheet sebagaimana video dibawah ini:

Menyembunyikan Failed Load Images di Blogger

Gambar
Salah satu cara untuk menyembunyikan gambar yang tidak dapat di load pada suatu halaman Blogger adalah menggunakan fungsi remove element Javascript. Namun cara ini tidak penulis jamin dapat berjalan disemua browser. Setidaknya, dapat mempercantik tampilan posting yang hanya menggunakan gambar thumbnail dari Youtube. Dibawah ini adalah kode Javascript dan bagaimana menambahkan di Blogger. Kode <script> var imgs=document.getElementsByTagName("img"); for(var i=0,j=imgs.length;i<j;i++){ imgs[i].onerror = function(e){ this.parentNode.removeChild(this); } } </script> Demo

Generate Karakter Acak dan Menempatkannya di Sel Google Sheets dengan Apps Script

Gambar
Untuk menandai sel dengan susunan karakter random, yang mana kursor mouse sedang menandainya di sel tersebut pada Google Sheets, kita dapat menggunakan mengunakan Apps Script berikut ini: Kode function onOpen() { const ui = SpreadsheetApp.getUi(); const menu = ui.createMenu("Keperluan"); menu.addItem("Generate Random", "createRandom"); menu.addToUi(); } function makeRandomChar(length) { var result = ""; const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@"; let counter = 0; while (counter < length) { result += characters.charAt(Math.floor(Math.random() * characters.length)); counter += 1; } return result; } function generateRandom() { return makeRandomChar(10+Math.floor(Math.random() *40)); } function createRandom() { var sheet=SpreadsheetApp.getActive(); sheet.getActiveSheet().getCurrentCell().setValue(""+generateRandom()); } Kode d

Kode Apps Script MailApp untuk Form Mengirimkan Email

Gambar
Terkadang kita membutuhkan untuk mengirimkan email kepada pengguna web site secara langsung, tanpa harus membuka email itu sendiri. Untuk web apps yang dibangun menggunakan Apps Script, sangat dimudahkan, dengan menggunakan fungsi MailApp untuk mengirimkan email menggunakan akun Google kita. Maka, berikut ini ada video demo bagaimana membuat form sederhana, yang berfungsi untuk mengirimkan email ke pengguna secara langsung, tanpa harus membuka email. Demo Kode file .gs function processEmailToUser(recipient,subject,pesan) { var datum={}; var bool=sendEmailToUser(recipient,subject,pesan); if(bool){ datum["status"]=1; }else{ datum["status"]=0; datum["error"]="Gagal mengirimkan email"; } return datum; } function sendEmailToUser(recipient,subjecto,pesan) { try { MailApp.sendEmail({ to: recipient, subject: subjecto, htmlBody: pesan }); return true; } catch (e) { return false; } } file .html      func

Apps Script untuk Mengirimkan Notifikasi Approval

Gambar
Berikut ini kode Apps Script untuk mengirimkan email approval berdasarkan input dari pengguna: Kode function onOpen() { const ui = SpreadsheetApp.getUi(); const menu = ui.createMenu("Administrasi"); menu.addItem("Kirim Email Approval", "openFormEmail"); menu.addToUi(); } function openFormEmail() { var target = SpreadsheetApp.openById("--ID Sheet--"); var ss=target.getSheetByName("Instansi"); ss.getRange("A2:F").getValues().map(function(row,index){ if(row[0]!="" && row[0]!="Passed"){ var subject="Pengajuan Instansi "+row[3]+" "+row[0]; var pesan="Yth. "+row[2]+"<br/><br/>Terkait pengajuan nama instansi dengan:<br/><br/>"; pesan+="Nama: "+row[3]+"<br/>"; pesan+="Alamat: "+row[4]+"<br/><br/>"; if(row[0]=="Approved"){

Apps Script untuk Cetak Sertifikat

Gambar
Tutorial pembuatan sertifikat menggunakan Google Docs, Sheets dan Apps Script teleh penulias buat dalam video di bawah ini: Sedangkan berikut ini adalah kode Apps Script yang penulis gunakan di dalam tutorial di atas: function onOpen() { const ui = SpreadsheetApp.getUi(); const menu = ui.createMenu("Cetak Sertifikat"); menu.addItem("Cetak Sertifikat", "generateMode"); menu.addToUi(); } function generateMode() { var idtemplate="1qseLMkdYIzmx0rhkKELF0xxlsD13CS1eCk0MlcTKt_g"; var idtarget="1ZLNksdiilEc0mQ88WOfAuU8_JcMVcO6ewXuJes-UU9I"; var ss = SpreadsheetApp.openById("1j1TArXYzRlVGvB9q7ly7NdyF-nsJcCH6RT3rOQik0yQ"); var so=ss.getSheetByName("Source"); var data=so.getRange("A1:C").getValues().map(function(row){return (row[0]!="")?row:null}).filter(function(cellData){return cellData != null;}); const docTemplate=DocumentApp.openById(idtemplate); var docTarget=DocumentApp.open

Menghapus Baris di Google Sheets yang Memiliki Sel Kosong dengan Apps Script

Gambar
Pastinya, input data yang dilakukan oleh pengguna, terdapat data yang kosong pada salah satu sel-nya. Hal ini biasanya karena salah input, atau memang sengaja di-input-kan oleh pengguna. Untuk mengurangi proses pengolahan, dapat dilakukan penghapusan data tersebut, dengan Apps Script yang dapat di download dengan kode seperti di bawah ini: Kode function deleteKosong() { var target = SpreadsheetApp.openById("--id Google Sheets file--"); var ss=target.getSheetByName("Data"); var data=ss.getRange("A2:G").getValues().map(function(row,index){return (row[0]!="" && row[3]=="")?index:null;}).filter(function(cellData){return cellData != null;}); for(var i=data.length-1;i>=0;i--){ ss.deleteRow(2+data[i]); } } Demo

Menghilangkan Karakter Baris Baru di Google Sheets dengan Apps Script

Gambar
Kadang, input data dari pengguna, secara tidak sengaja menyertakan karakter baris baru "\n". Padahal bisa jadi, untuk kebutuhan administrasi, sebenarnya tidak menghendaki adanya karakter tersebut, sebab bisa mengganggu format cetak dokumen. Oleh karena itu, berikut ini kode Apps Script yang dapat digunakan untuk mencari dan menghilangkan karekter baru tersebut, yang terdapat dalam file Google Sheets. Kode function hilangkanEnter() { var target = SpreadsheetApp.openById("--ID Google Sheets File--"); var ss=target.getSheetByName("Data"); ss.getRange("D2:D").getValues().map(function(row,index){ var str=row[0].replaceAll("\n"," "); ss.getRange("D"+(2+index)).setValue(str); }); } Demo

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

Gambar
Dimisalkan terdapat data yang tersimpan di Google Sheets dan tidak terdapat pembeda antara satu dengan yang lain. Hal ini akan mengakibatkan kesulitan jika akan dilakukan penghapusan salah satu atau bebarapa data tertentu melalui web apps. Oleh karena itu, kode Apps Script di bawah ini, adalah kode untuk menambahkan "unique ID key" pada tiap data, terutama untuk mempermudah proses penghapusan data, yang biasanya dilakukan melalui web apps oleh pengguna yang berbeda. Kode function makeRandomChar(length) { var result = ''; const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@'; let counter = 0; while (counter < length) { result += characters.charAt(Math.floor(Math.random() * characters.length)); counter += 1; } return result; } function addRandomKey() { var target = SpreadsheetApp.openById("--ID Google Sheets file--"); var ss=target.getSheetByName("Data"); var d

Apps Script untuk Copy File ke Folder berdasarkan ID yang Terdaftar di Google Sheets

Gambar
Suatu hari, penulis diminta untuk mengumpulkan file-file yang disediakan dalam bentuk ID yang disimpan dalam Google Sheets. Alasan kenapa harus di-copy, karena pemilik file, tidak ingin file aslinya diubah-ubah. Sehingga, karena file juga berada di Google Drive, penulis memilih untuk men-copy ke folder lain. Dibawah ini adalah kode Apps Script yang digunakan untuk melakukan copy file ke folder dalam Google Drive, dan mencatat hasilnya yang berupa alamat url file yang baru, di kolom yang lain. Script function copyFiletoFolder() { var folder = DriveApp.getFolderById("--ID Folder target--"); var target = SpreadsheetApp.openById("--ID sheets--");//its same var ss=target.getSheetByName("PKL"); ss.getRange("J2:J").getValues().map(function(row,index){ if(row[0]!=""){ try{ var file=DriveApp.getFileById(row[0]); var f=file.makeCopy(file.getName(),folder); ss.getRange("K"+(2+index)).setValue(f

Cek Broken Link pada File PDF dengan PyPDF2 dan Google Sheets

Gambar
Latar Belakang Kadang diperlukan juga, untuk mengecek hyperlink yang terdapat dalam dokumen PDF, apakah link-link tersebut valid, mengarah pada halaman yang tersedia atau tidak. Contohnya dokumen PDF akreditasi yang diupload dan akan dibaca oleh asesor. Dokumen seperti ini perlu dipastikan bahwa seluruh hyperlink-nya valid, sebab jika asesor mencoba dan menemukan invalid link, dapat berpotensi pada pengurangan nilai.  Disclaimer Penulis sebenarnya tidak suka Python, namun karena belum dapat membuat library PDF Reader sendiri, maka mohon maaf penulis tetap menggunkan PyPDF2, untuk mempercepat pekerjaan saja. Langkah Pertama-tama, letakkan file extract Hyperlink.py dan PDF yang akan di cek hyperlink-nya dalam satu folder. Dalam contoh posting ini, file PDF yang akan di cek bernama SURVEYLANCE_LED A-B_PSSI (1).pdf . Lalu tuliskan script Python di bawah ini, pada file extract Hyperlink.py. Kode extract Hyperlink.py import PyPDF2 import urllib.request as urllib2 PDFFile = open("SURV

Mencoba Submit Theme di Wordpress.org

Gambar
Sangat penasaran sekali, bagaimana agar theme yang penulis buat, dapat tampil menjadi salah satu theme yang ditawarkan pada halaman tampilan Wordpress. Baru pada tahun 2023 ini, penulis berkesempatan untuk mengoprek lebih dalam Wordpress, mulai dari theme sampai plugin. Belum sampai ke core. Hal ini berkat serangan virus "Slot Gacor" yang beberapa bulan sebelum tulisan ini ditulis, menyerang beberapa website yang penulis kelola. Di mana kode injeksinya, penulis temukan di theme dan plugin yang digunakan. Bukan pada core Wordpress. Artinya, dari serangan tersebut adalah yang membuat penulis semakin berkeinginan untuk membuat theme dan plugin sendiri untuk Wordpress. Maklum, karena pada waktu itu, posisi penulis bukan yang membangun website dari awal, sehingga plugin yang digunakan, adalah sesuai kebutuhan tenaga IT sebelumnya. Dan Wordpress adalah aturan permintaan instansi pemilik website. Ngomong-ngomong bagaimana bisa terkena "Slot Gacor", apakah karena tenaga IT

Apps Script untuk Membuat Banyak Folder di Google Drive

Melanjutkan pekerjaan sebelumnya, ternyata diperlukan pembuatan folder berdasarkan inisial karyawan, pada Spreadsheet daftar karyawan yang digunakan pada posting yang berjudul "Duplikasi File Template Kuisioner dengan Apps Script" . Tujuannya, dengan memberikan akses tiap folder berdasarkan akun masing-masing karyawan, maka dengan membuat file di dalam folder tersebut saja, file yang membutuhkan akses, akan dapat langsung digunakan oleh karyawan yang bersangkutan. Berikut ini adalah kode untuk membuat folder berdasarkan inisial karyawan: function makeFolderbyList() { var ss = SpreadsheetApp.openById("--idsheetkaryawan--");//sheet target untuk var so=ss.getSheetByName("Karyawan"); var data=so.getRange("A2:T").getValues().map(function(row,index){ var pass=false; if(row[0]!="" && row[19]=="Active"){ pass=true; row.push(index); } return pass?row:null}).filter(function(cellData){return cel

Duplikasi File Template Kuisioner dengan Apps Script

Gambar
Suatu waktu, penulis mendapat tugas untuk membuat kuisioner beberapa karyawan menggunakan Google Spreadsheet. Di mana daftar karyawan juga telah disediakan pada file Spreadsheet lain seperti ditunjukkan pada gambar di bawah ini: Skema kerjanya, pertama penulis membuat template kuisioner. Kedua, penulis menduplikasinya, dengan nama file sesuai inisial masing-masing karyawan. Dan terakhir, ketiga, penulis mengumpulkan url tiap file kuisioner tiap karyawan, untuk rekapitulasi. Kode Apps Script untuk langkah kedua, adalah sebagai berikut: function duplicateFileAsList() { var ss = SpreadsheetApp.openById("idsheetinisialkaryawan");//sheet target untuk var so=ss.getSheetByName("Dosen"); var data=so.getRange("A2:D").getValues().map(function(row,index){ if(row[0]!=""){ row.push(index); } return (row[0]!="")?row:null}).filter(function(cellData){return cellData != null;}); var filesource=DriveApp.getFileById("idsp

Mengecilkan dan Rename Berurutan File Gambar dengan Java

Gambar
Sebagai admin web site suatu instansi, seringkali gambar yang dikirim oleh bagian marketing untuk diposting sebagai berita, dikirim dengan ukuran yang besar, dan jika melalui aplikasi Whatsapp namanya akan menjadi panjang seperti ditunjukkan gambar dibawah ini: Besarnya ukuran file ini, sudah pasti karena saat tulisan ini ditulis, kamera ponsel telah dapat menghasilkan gambar dengan resolusi yang tinggi. Sedangkan untuk keperluan web, sebenarnya tidak harus besar, ukuran yang proposional dan representatif, justru akan mempercepat loading web dan menghemat space hosting. Memang, untuk keperluan membuat dokumentasi suatu kegiatan, dibanding sebelum tahun 2013, penulis rasakan menjadi lebih mudah. Di mana dulu penulis harus datang langsung, dan kalaupun mengambil photo, perlu dengan kamera yang benar-benar kamera. Sekarang penulis hanya tinggal meminta photo dokumentasi dan materi inti ke siapapun yang dapat hadir dalam kegiatan tersebut, sebab dengan kamera ponsel saat ini, siapapun