Mengirim Email Lewat Google Sheet

Adam WB
Grow at Warung Pintar
5 min readSep 26, 2019

--

Beberapa waktu yang lalu saya mendapatkan sebuah task yang tidak biasa. Kenapa tidak biasa ? karena problem pada task ini tidak biasa, saya harus mengirim lewat email melalui google sheet. Mana bisa ? Mana mungkin ? itu lah yang terpikir pada benak saya. Sebelumnya saya ucapkan terima kasih kepada co-workers saya yang benar-benar memberikan pencerahan mas Cal.

Kenapa bisa berhadapan dengan masalah itu?

Jadi sebelumnya yang terjadi adalah, saya memiliki sebuah google form yang isinya permintaan dari co-workers Warung Pintar untuk sebuah akses data. Dimana jika ada user yang telah mengisi form tersebut maka ada email notifikasi yang dikirimkan kepada tim Data. Hal ini sebenarnya bisa dilakukan dengan bantuan menu tools dari google sheet seperti gambar dibawah

Namun itu hanya bisa dikirim kepada saya selaku pembuat google form. Bagaimana jika ingin dikirim ke banyak orang ? Disini lah permasalahan itu ada.

Setelah mencari berbagai sumber ( terima kasih stackoverflow ), ada salah satu cara yaitu dengan menggunakan google app script. Google App Script adalah custom editor programming untuk memberikan tambahan kemampuan fitur pada service google, sheet, docs, dan slide.

Jadi langsung saja, buka

Tools -> Script Editor

Setelah itu kita akan diarahkan ke sebuah halaman baru

Karena kita ingin mendapatkan update ketika ada user yang mengisi form baru, maka hal disinilah fitur google app script yang kita butuhkan ada, sebuah trigger rules.

langsung saja klik pada tools bergambar jam. Masukkan nama project yang ingin digunakan. Setelah akan masuk ke sebuah halaman baru. Lalu klik add triger. ExTrigger adalah nama project yang sebelumnya saya isi.

Pilih function sesuai pada script awal tadi ( dimana nama functionnya adalah my function ). Setelah itu pilih event source dari spreadsheet. Setelah itu pilih event type berupa on form submit ( yang artinya akan ada trigger pada myFunction saat ada data pada form masuk ). Setelah itu klik save.

Maka akan muncul hasil seperti tertera diatas. Setelah ini maka kita siap untuk melakukan experimen. Kembali ke app script.

Sebelumnya saya memiliki sebuah spreadsheet yang bentuknya seperti ini

Karena diawal kita sudah memberikan trigger pada fungsi myFunction, kita masih perlu mengisi fungsi itu agar dapat membaca apa yang kita ingin kirimkan melalui email. Berikut isinya

function myFunction() {
SpreadsheetApp.flush();
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange(sheet.getLastRow(), 1, 1, 5);
var data = dataRange.getValues();
var row = data[0];
var emailAddress = row[2];
var htmlBody = ‘<ul>’;
htmlBody += ‘<li>’ + ‘Nama’ + “: “ + row[1] + ‘</li>’;
htmlBody += ‘<li>’ + ‘Email’ + “: “ + row[2] + ‘</li>’;
htmlBody += ‘<li>’ + ‘Lokasi’ + “: “ + row[3] + ‘</li>’;
htmlBody += ‘<li>’ + ‘Isi Pesan’ + “: “ + row[4] + ‘</li>’;
htmlBody += ‘</ul>’;
Logger.log(htmlBody)
GmailApp.sendEmail(‘email yang dituju’, ‘Form Baru Masuk’, ‘Form Baru Masuk’,
{
htmlBody: htmlBody
})
}

Penjelasan script :

Pertama kita perlu tahu bahwa sheet yang kita tuju aktif. Bisa jadi dalam satu file kita memiliki beberapa sheet. Kemudian kita perlu seolah-olah menyuruh sheet untuk memilih range cell untuk LastRow() (karena setiap data masuk akan berada pada bagian akhir baris sheet ). Kita masih mendapatkan barisnya. Kita perlu mendapatkan nilainya. Oleh karena itu kita perlu mengambil Values dari range cell tadi. Setelah itu kita tinggal menyesuaikan setiap kolom yang ada untuk pesan yang kita inginkan. Kita perlu mengirim kedalam bentuk htmlBody format agar terlihat rapi saat di email. Fungsi yang terpenting disini adalah GmailApp.sendEmail(). Inilah fungsi dimana kita dapat mengirim hasil data masuk pada form ke banyak tujuan email. Untuk detail setiap fungsi pada app script silahkan lihat pada https://developers.google.com/apps-script

Setelah selesai jangan lupa untuk disave dan silahkan dicoba. Sebelum dicoba, jangan lupa untuk di run terlebih dahulu manual melalui tools play pada menu app script (Karena kita perlu permission dari google untuk mengakses email kita) Ketika anda memasukan form maka secara otomatis maka trigger akan jalan dan mengirimkan email kepada tujuan. Email itu dikirim dari si pembuat sheet kepada yang ditulis di dalam app script. Berikut contoh email yang saya terima dan isi dari form yang saya kirim.

Bagaimana, sudah berhasil mengirim email ?

Sebelum mengakhiri cerita kali ini, saya akan membagikan sedikit tambahan.

Bagaimana jika kita ingin mengirimkan isi dari sheet namun bukan dari hasil form dengan cara yang mudah dan elegan ?

Tambahkan code berikut ke dalam app script :

function kirimEmail(){
var sheet = SpreadsheetApp.getActiveSheet();
var active_range = sheet.getActiveRange();
var email = sheet.getRange(active_range.getRowIndex(), 3).getValue();
Logger.log(email);
var htmlBody = ‘<p>Halo, saya Adam dari Warung Pintar</p>’;
htmlBody += ‘<p>Salam kenal</p>’
htmlBody += ‘<p>Terima kasih, sampai berjumpa</p>’
GmailApp.sendEmail(email, ‘Email Perkenalan’,’Email Perkenalan’,
{
htmlBody: htmlBody
})

SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.alert(“Hore, kamu baru mengirim email ke : “ + email + “\n”);
}
function onOpen( ){
var ui = SpreadsheetApp.getUi();
ui.createMenu(‘Menu Tambahan’)
.addItem(‘Kirim Email’, ‘kirimEmail’)
.addToUi();
}

Penjelasan code :

Kita membuat sebuah fungsi kirimEmail(). Fungsi ini akan berjalan kita memanggil fungsi tersebut. Berbeda dengan trigger diawal, fungsi ini akan dipanggil pada menu Menu Tambahan → kirim email. Menu Tambahan ini menu yang kita tambah secara manual. Namun untuk memanggil fungsi itu kita perlu berada pada baris yang sama dengan email yang akan kita kirim. Karena pada fungsi kirimEmail kita panggil fungsi getActiveRange()

Sehingga ketika kita klik menu tambahan→kirim email, maka kita akan mengirim email kepada email yang berada pada baris dimana kita aktif.

Itulah cerita yang dapat saya bagikan. Ada beberapa hal yang menarik yang bisa dikembangkan dari sini, contohnya saja jika kita ingin mengirim data hasil perhitungan dana harian melalui spreadsheet langsung ke email. Jika tidak perlu mendowonload file tersebut dan membuat email baru. Tinggal membuat sebuah fungsi untuk mengirim email dengan konten tertentu. Sehingga kita dapat melakukannya pada 1 aplikasi saja. Semoga bermanfaat !

--

--