Saya suka membaca, buku, artikel, blog, notes dll, untuk blog saya biasa menggunakan google reader dan setelah di shutdown, saya berpindah menggunakan feedly, ada lebih dari seratus sumber berita saya subscribe (meskipun tidak selalu saya baca semua artikelnya). Saya juga senang sekali kalau ada yang mengirimkan artikel-artikel menarik melalui email karena tentu saja pengirim info tersebut telah memilihkan berita atau informasi yang menarik bagi saya. Hal tersebut yang dilakukan oleh salah seorang manager senior di kantor.
Karena beliau relatif sering mengirimkan artikel tersebut, saya berfikir untuk menyimpan artikel-artikel tersebut di google site saya, sehingga saya bisa mengaksesnya sewaktu-waktu dengan mudah. Oleh karena itu saya membuat script sederhana untuk mengambil artikel tersebut dan menyimpannya di google site dengan menggunakan google apps script. Menggunakan google apps script ternyata sangat mudah, berikut script yang saya buat:
/** * Retrieves all inbox and post body email from pak Soegi with subject: "fyi" to google sites * https://sites.google.com/a/kaskusnetworks.com/hakim/home/articles * For more information on using the GMail API, see * https://developers.google.com/apps-script/class_gmailapp */ function processInbox() { Logger.log("start reading inbox"); // get top 50 inbox (assuming no more than 50 threads within a day) // sort it based on first message date, since sometimes old thread goes up because of new message/reply // it make sure that only latest message read and posted to google site var threads = GmailApp.getInboxThreads(0, 50).sort(function(thread1, thread2){ return thread2.getMessages()[0].getDate().getTime() - thread1.getMessages()[0].getDate().getTime(); }); var day_in_miliseconds = 86400000; // 24*60*60*1000 if (threads.length > 0){ for (var i = 0; ; i++) { // get all messages in a given thread var thread = threads[i]; var firstmessage = thread.getMessages()[0]; var firstmessagedate = firstmessage.getDate() var now = new Date(); // only check for past 24 hour email if ((now.getTime() - firstmessagedate.getTime()) <= day_in_miliseconds){ var messages = thread.getMessages(); // log message subject var message = messages[0]; // we only care for the first message Logger.log(message.getFrom() + " subject: "+ message.getSubject()) if (message.getSubject().trim() == "fyi" && message.getFrom().indexOf("soegi") > 0){ var date = message.getDate() // post to google sites var fyi = "<strong>" + date.toLocaleDateString() + "</strong><br/>"+message.getBody(); addArticlesToPage(fyi); } }else{ // outdated message break; } } } }; function addArticlesToPage(fyi){ var domain = 'kaskusnetworks.com'; var sitenya = 'hakim'; var site = SitesApp.getSite(domain, sitenya); var page = SitesApp.getPageByUrl("https://sites.google.com/a/kaskusnetworks.com/hakim/home/articles"); var content = page.getHtmlContent(); // append content content = content.replace("</div></td>","<br/>"+fyi+"</div></td>"); page.setHtmlContent(content); }
selanjutnya saya tinggal menentukan trigger yang akan mengeksekusi fungsi tersebut (semcam membuat cron jobs). akhirnya halaman google sites saya akan selalu terupdate dengan link-link informasi menarik yang dikirimkan kepada saya. Dan di akhir pekan, saya bisa membaca semua link-link tersebut dengan santai.
happy scripting :)