Postingan

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

Manajemen Pekerjaan menggunakan Google Sheets

Gambar
Latar Belakang Salah satu kelemahan penulis adalah memanajemen pekerjaan. Hal ini karena penulis sering lupa, dan jika telah fokus ke satu pekerjaan, pekerjaan yang lain, yang penulis tinggalkan sebelumnya bisa lupa. Dan kalaupun memulai, bisa jadi dari awal. Dulu, ketika pekerjaan penulis hanya freelance pada aplikasi Edugameapp.com, penulis dapat konsentrasi dan pekerjaan hanya memiliki satu cabang, dan tahap penyelesaiannya mudah diingat, tanpa perlu dicatat. Sedangkan ketika bekerja disuatu instansi, tidak ada kata fokus, justru pekerjaan semakin beragam, dengan pola pengerjaan yang bersamaan, dan seolah tidak ada habisnya. Memang, dengan bekerja di instansi, meskipun statusnya outsourcing dan gaji lumayan stabil dibanding freelance. Tetapi pekerjaan lebih bersifat bersamaan (paralel), yang ketika pekerjaan satu belum selesai, telah datang atau ditambah dengan pekerjaan lain, dari/oleh atasan yang berbeda. Lucunya, meskipun pekerjaan itu adalah pekerjaan tim, yang konon dikerjakan

Mengirimkan Data Array Menggunakan Python dan Apps Script ke Google Sheets

Dalam posting ini, diberikan contoh mengirimkan data array menggunakan Python urllib dan Apps Script UrlFetchApp.fetch, untuk diinputkan ke Google Sheets dengan fungsi doPost. Fungsi doPost yang dimaksud, kurang lebih seperti kode dibawah ini: function doPost(e) { . . . var raw=(e.parameter["raw"]!=null)?JSON.parse(e.parameter["raw"].toString().replace(/'/g, '"')):null; var target = SpreadsheetApp.openById(idspreadsheet); var ss=target.getSheetByName(sheet); ss.getRange(1+start_row,1+start_column,raw.length,raw[0].length).setValues(raw); . . . } Di mana variabel target adalah Google Sheet tempat data disimpan. Sedangkan contoh pengiriman data array, berturut-turut sesuai kode berikut: Python from urllib import request, parse import json urlmain="https://script.google.com/macros/s/idapppost/exec" def senddingdata(idspreadsheet,sheet,mode,datum): data = { "keyvalue":"keyaccess","idspreadsheet

Perbedaan Sudut Pandang Dosen dan Karyawannya

Sebuah perdebatan dingin dari sisi Dosen senior dan karyawan di suatu instansi pendidikan, di mana penulis pernah bekerja di dalamnya, menggelitik penulis untuk membaginya dalam blog ini. Bukan untuk meminta pembenaran, hanya saja penulis ingin berbagi sudut pandang, yang siapa tahu berefek positif bagi pembaca. Mulanya seorang karyawan senior, mengatakan jika ada yang dari pihak Dosen yang memberi penilaian jelek terhadap pekerjaan penulis sebagai karyawan, "Jangan dianggap, sebab yang membayar kita itu Fakultas. Bukan Dosen itu". Tentu, perkataan tersebut berpengaruh dan menjadikan penulis berprinsip, "Yang penting pekerjaanku selesai". Setelah beberapa lama bekerja, tiba-tiba seorang Dosen senior berbincang dengan penulis dan berkata, "Salah satu daya tarik Fakultas adalah SDM Dosen-dosen pengajarnya, sehingga mahasiswa bersedia belajar dan menjadi mahasiswa, adalah karena adanya Dosen-dosen, dan tugas karyawan adalah membantu Dosen-dosen tersebut". Dim

Penggunaan JSON.stringify untuk Komunikasi Array dengan UrlFetchApp.fetch

Untuk mengambil atau memasukkan data dari database Google Sheets yang mempunyai beda authentifikasi, dapat menggunakan UrlFetchApp.fetch pada fungsi Apps Script dan menggunakan metode post. Dibawah ini adalah contoh pengiriman data array arr, untuk ditangkap dengan fungsi doPost(e): var email=Session.getActiveUser().getEmail(); var arr=["Mobil","Motor","Sepeda"]; var data = { "keyvalue":"idrahasia", "idspreadsheet":"--idgooglesheetdatabse--", "sheet":"Biodata", "ëmail":email, "raw":JSON.stringify(arr) }; var options = { 'method' : 'post', 'payload' : data }; var response=UrlFetchApp.fetch(urlpostdata,options); return JSON.parse(response.getContentText()); Perbedaan authentifikasi yang dimaksud disini adalah, misal aplikasi Apps Script yang dibuat, karena dibutuhkan untuk mengambil informasi email pengguna, maka authentifikasi akan diarahkan ke

Perbaikan Tanggal pada Google Sheets Akibat Beda Format Lokalisasi Indonesia

Gambar
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 = sDa