Google Apps Script for Fun and Profit

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 :)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s