Membuat Formulir Kontak Google Doc Agar Bisa Mengirimkan Datanya Langsung ke Kotak Pesan Email
Tabel Konten
Pembaharuan 2019/06/25: Membuat Formulir Kontak dengan Google Drive
Posting ini membutuhkan pembaharuan → Google Apps Script – Error: “DocsList” not Defined
Sebenarnya Google Doc bukan merupakan layanan untuk membuat aplikasi-aplikasi semacam ini. Membuat formulir kontak menggunakan Google Doc hanya bisa menampilkan pesan di spreadsheet, dan bukannya langsung menuju kotak masuk pesan seperti yang kita kehendaki. Karena fungsi utama Google Doc pada dasarnya memang bukan untuk membuat formulir kontak semacam itu, melainkan untuk membuat formulir yang terintegrasi dengan dokumen, sehingga ini memungkinkan pengguna untuk bisa mengirimkan data secara online. Dan dari formulir itulah data bisa langsung terkirim dan akan tersimpan ke dalam dokumen berbentuk tabel.
Blogger Xpertise memiliki solusi agar data pesan yang dikirimkan melalui formulir Google Doc bisa langsung terkirim menuju pesan masuk email Anda seperti ini:
Di sini Saya akan menjelaskan langkah-langkah pembuatan formulir kontak dimulai dari awal sampai akhir. Ada dua bagian utama yang harus Anda kerjakan di sini, yaitu membuat formulir kontak dan mengelola spreadsheet yang terkait dengan formulir kontak tersebut.
Membuat Formulir Kontak
Di sini Anda akan diajak untuk membuat formulir kontak menggunakan Google Doc.
Pertama-tama buka halaman dasbor Google Drive Anda, lalu buat sebuah formulir:
Tentukan judul dan deskripsi formulir, serta buat beberapa kotak pertanyaan yang umum terdapat pada formulir kontak di web. Misalnya: Perihal, Nama, Email, Alamat Web dan Pesan:
Pada bagian Laman Konfirmasi, tuliskan pesan terima kasih yang ingin Anda tampilkan ketika pesan telah berhasil terkirim:
Klik tombol Kirim Formulir. Akan muncul kotak dialog baru. Klik tombol Sematkan. Di situ Anda akan diberi kode embed formulir kontak yang bisa Anda pasang pada halaman web Anda. Atau Anda juga bisa melihat hasil jadinya pada halaman formulir khusus dengan menekan tombol Lihat Bentuk Jadi di panel atas, tepat di bawah menu utama.
Klik tombol Pilih Tujuan Tanggapan, lalu cek opsi Spreasheet baru. Berikan judul, misalnya Data Tanggapan:
Klik tombol Buat. Tunggu sampai tombol Lihat Tanggapan muncul. Pada tampilan Google Doc saat ini, tombol Lihat Tanggapan akan muncul untuk menggantikan tombol Pilih Tujuan Tanggapan. Klik tombol tersebut untuk melihat spreadsheet formulir kontak Anda.
Mengelola Data yang Masuk
Setelah spreadsheet tercipta, sekarang adalah saatnya untuk mengelola data yang masuk agar setiap kali data baru terkirim ke dokumen, maka salinan data tersebut bisa langsung masuk ke kotak pesan email.
Pilih menu Alat » Editor skrip:
Anda akan dibawa menuju halaman proyek tak berjudul. Pada formulir bernama Kode.gs
tempelkan JavaScript ini:
function sendFormByEmail(e) {
// Tentukan teks subjek/perihal yang nantinya akan muncul pada pesan masuk email setiap kali pesan baru terkirim
var emailSubject = "PESAN BARU!";
// Tentukan alamat email di sini atau beberapa alamat email sekaligus yang dipisahkan dengan tanda koma
var yourEmail = "email@domain.com";
// Masukkan kunci spreadsheet yang terhubung dengan formulir kontak ini
// Bisa ditemukan pada URL ketika Anda melihat spreadsheet tersebut
var docKey = "0Ah0bOy8H_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
// Jika Anda menginginkan skrip ini mengirim data secara otomatis ke semua editor sheet, set nilainya menjadi `1`
// Jika Anda hanya ingin mengirimkan data ke `yourEmail`, set nilainya menjadi `0`
var useEditors = 1;
// Apakah Anda telah menambahkan kolom yang ternyata tidak Anda gunakan pada formulir?
// Jika ya, set nilai ini ke nomor urut kolom terakhir yang Anda tambahkan pada spreadsheet.
// Sebagai contoh: Kolom `C` ada pada nomor urut ke 3
var extraColumns = 0;
if (useEditors) {
var editors = DocsList.getFileById(docKey).getEditors();
var notify = (editors) ? editors.join(',') : yourEmail;
} else {
var notify = yourEmail;
}
// Variabel `e` memegang semua data di dalam array.
// Loop semua data di dalam array dan sisipkan nilainya ke pesan.
var s = SpreadsheetApp.getActive().getSheetByName("Data1");
if (extraColumns) {
var headers = s.getRange(1, 1, 1, extraColumns).getValues()[0];
} else {
var headers = s.getRange(1, 1, 1, s.getLastColumn()).getValues()[0];
var message = "";
}
for (var i in headers) {
message += headers[i] + ' = ' + e.values[i].toString() + '\n';
}
MailApp.sendEmail(notify, emailSubject, message);
}
Tentukan subjek email, alamat email dan kunci/ID spreadsheet yang tadi Anda buat. ID spreadsheet bisa Anda temukan pada URL spreadsheet terkait:
https://docs.google.com/spreadsheet/ccc?key=0Ah0bOy8H_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#gid=0
Data1
adalah nama sheet. Pastikan nilainya sama dengan sheet terkait:
Sekarang pilih menu Sumber Daya » Pemicu proyek saat ini. Akan muncul kata “No triggers set up. Click to add one now”. Klik pada tautan tersebut untuk menambahkan trigger. Pada kolom Events, pastikan opsi yang terpilih adalah From spreadsheet dan On form submit.
Klik opsi notification. Pada opsi ke dua di kotak dialog Execution failure notifications, pilih immediately.
Klik OK.
Akan muncul pesan authorisasi skrip. Klik tombol Terima/Authorize. Ini akan menyetujui authorisasi untuk trigger yang Anda buat.
Anda akan dibawa kembali menuju layar editor. Klik Simpan/Save. Sekarang Anda sudah bisa mencoba mengirimkan pesan melalui formulir kontak buatan Anda. Pembuatan formulir kontak ini sudah selesai.
Setelah ini mungkin Anda akan menerima pesan error ke kotak pesan email. Beruntung jika tidak. Selebihnya hanyalah mengenai pemecahan masalah error yang terjadi. Saya pribadi belum pernah mengalami masalah-masalah yang rumit. Jadi Saya masih belum bisa membuat daftar kemungkinan error yang terjadi di sini. Berikut ini adalah beberapa hal yang perlu diperhatikan menurut Blogger Xpertise:
- Pastikan nama sheet tidak mengandung karakter spasi. Ini mungkin bisa menimbulkan error ⇐ Sheet Saya mengandung karakter spasi, tetapi Saya tidak mengalami masalah itu.
- Jangan sampai ada kolom yang kosong yang Anda tambahkan ke dalam spreadsheet kontak. Ini akan menciptakan masalah pada perataan data yang masuk serta membuat skrip gagal bekerja ⇐ Saya mengalami masalah ini sebelumnya gara-gara menambahkan dan memindahkan kolom baru, serta karena menambahkan field pertanyaan baru pada formulir kontak yang Saya buat. Jadi pastikan formulir yang Anda buat sudah benar-benar menetap.
- Nama kolom terkadang juga dapat menimbulkan masalah. Pastikan Anda membuat nama kolom/pertanyaan formulir dengan karakter teks yang standar.
Menonaktifkan Notifikasi pada Kiriman Email Spam
Karena formulir kontak ini tidak memiliki captcha maka seringkali Anda akan mendapatkan pesan-pesan aneh yang datang entah dari mana. Berikut ini adalah sebuah cara untuk membuat agar pesan notifikasi tidak dikirimkan ke email Anda jika submisi pesan yang dilakukan terdeteksi sepagai spam:
function sendFormByEmail(e) {
// Tentukan teks subjek/perihal yang nantinya akan muncul pada pesan masuk email setiap kali pesan baru terkirim
var emailSubject = "PESAN BARU!";
// Tentukan alamat email di sini atau beberapa alamat email sekaligus yang dipisahkan dengan tanda koma
var yourEmail = "email@domain.com";
// Masukkan kunci spreadsheet yang terhubung dengan formulir kontak ini
// Bisa ditemukan pada URL ketika Anda melihat spreadsheet tersebut
var docKey = "0Ah0bOy8H_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
// Jika Anda menginginkan skrip ini mengirim data secara otomatis ke semua editor sheet, set nilainya menjadi `1`
// Jika Anda hanya ingin mengirimkan data ke `yourEmail`, set nilainya menjadi `0`
var useEditors = 1;
// Apakah Anda telah menambahkan kolom yang ternyata tidak Anda gunakan pada formulir?
// Jika ya, set nilai ini ke nomor urut kolom terakhir yang Anda tambahkan pada spreadsheet.
// Sebagai contoh: Kolom `C` ada pada nomor urut ke 3
var extraColumns = 0;
if (useEditors) {
var editors = DocsList.getFileById(docKey).getEditors();
var notify = (editors) ? editors.join(',') : yourEmail;
} else {
var notify = yourEmail;
}
// Cek pesan spam: `0` berarti tidak ada spam
var isSpam = 0;
// Isi dengan pola-pola spam yang ingin Anda blokir dalam format regular ekspresi
var spamKeywords = [
/beijing escort|louis vuitton|www\.nama_web_1\.com|www\.nama_web_2\.com/i,
/(buy|cheap)(ing|est)/i,
/fuck|shit|sex|xxx/i
...
...
];
// Variabel `e` memegang semua data di dalam array.
// Loop semua data di dalam array dan sisipkan nilainya ke pesan.
var s = SpreadsheetApp.getActive().getSheetByName("Data1");
if (extraColumns) {
var headers = s.getRange(1, 1, 1, extraColumns).getValues()[0];
} else {
var headers = s.getRange(1, 1, 1, s.getLastColumn()).getValues()[0];
var message = "";
}
for (var i in headers) {
message += headers[i] + ' = ' + e.values[i].toString() + '\n';
for (var j = 0, sk = spamKeywords.length; j < sk; ++j) {
// Jika data terdeteksi sebagai spam, tingkatkan nilai variabel `isSpam`
if (spamKeywords[j].test(e.values[i].toString())) isSpam++;
}
}
if (isSpam === 0) { // Kirimkan notifikasi jika nilai `isSpam` adalah `0`
MailApp.sendEmail(notify, emailSubject, message);
}
}
Anda bisa mengatur pola spam pada variabel spamKeywords
sesuka hati dengan jumlah pola sebanyak yang Anda mau dalam bentuk regular ekspresi. Jika Anda tidak mengerti atau belum menguasai regular ekspresi, Anda bisa menggunakan deteksi spam yang lebih sederhana menggunakan pengecekan indeks teks:
var spamKeywords = [
"beijing escort"
"louis vuitton"
"www.nama_web_1.com",
"www.nama_web_2.com",
"buy",
"cheap",
...
...
];
if (e.values[i].toString().indexOf(spamKeywords[j]) > -1) isSpam++;
Walaupun begitu, cara ini hanya bisa digunakan untuk mencegah terkirimnya notifikasi pesan masuk saja jika pesan yang dikirimkan adalah pesan spam, dan tidak bisa mencegah terkirimnya data pesan spam ke dalam spreadsheet. Saya sarankan Anda untuk secara rutin membuka sheet terkait formulir kontak ini minimal setiap satu bulan sekali untuk menghapus data-data yang tidak diperlukan. Karena Saya tidak bisa menjamin tentang apa yang akan terjadi pada data Google Doc Anda jika jumlah data yang masuk nanti sudah terlalu besar.
57 Komentar
Anonim
Ternyata Bisa Dimanipulasikan Google Doc Dengan Email.
Kalau Membuat Email Balasannya Gimana Mas Taufik..?
Otomatis Terbalaskan Dengan Sebuah Teks Tertentu.
Taufik Nurrohman
Lihat gambar ini:
Ada tautan Reply untuk membalas email. Setiap pesan yang masuk ke email pasti bisa langsung dibalas. Selain itu, kalau data Email diisi dengan alamat email sungguhan, maka alamat email tersebut akan secara otomatis berubah menjadi tautan yang bisa diklik untuk melakukan balasan. Setidaknya di GMail akan seperti itu.
Anonim
maksudnya begini ,
Setiap Pesan yang masuk ke email akan otomatis terbalaskan tanpa harus mengetik teks terlebih dahulu.
atau otomatis terkirim jika sorang lain mengirimkan pesan ke email kita...?
nah itu bagaimana konfigurasinya...?
Ijal Fauzi
Mungkin yang dimaksud mas Rizky itu balasan otomatis seperti :
"email anda telah kami terima, bla bla bla"
Yang muncul disetiap orang mengirim email ke kita :)
Taufik Nurrohman
Oh, kalau yang itu Saya kurang tahu.
Anonim
terima kasih telah meluruskan pertanya'an saya :)
harus tau nih :D
Kang Rian
waduh , itu autoresponder sob, kalo punya cPanel pasti bisa di set automatis reply jika mengirim ke email yang bersangkutan. :D
Sunandar
keren gan.. thanks bgt nih
Damar Zaky
wah pernah kuterapkan ini, tapi ternyata menggunakan PHP lebih seru...
Beben Koben
WOW tampilan baru :-bd
Imron Fhatoni
saya akan mencoba menerapkannya mas taufik :)
NIA ATTALIA
Mencoba mengkloning lagi ya ?
Ijal Fauzi
=D
Bima Aditama
saya gak nyangka blogspot tampilannya bisa kayak gini,
nih saya mau tanya soal google adsense : bagus mana gan pilih tampilan google adsense hanya text atau text dan gambar? apakah penghasilannya nanti beda???
Beben Koben
di datengin kagak master web text area rich! ada filesaver kan tuh?
begini contohna master
http://rx.hu/AUzz
hihihi :D sukses \o/
Beben Koben
kotak searchnya full stylish...mantappp...pakek press key Ctrl + F :-bd
Unknown
Cocok Jadi GM kamu Mas Taufik :-bd
Kia Meliala
emang dia Game Master apa ......
hahaha
uki
baru ingat lagi :-bd telimikiciw~
Unknown
mantap gan
Anonim
Kalau yang ini belum pernah saya coba :)
masagung
aku coba error di baris ini
message += headers[i] + ' = ' + e.values[i].toString() + '\n';
Errornya begini mas
TypeError: Cannot read property "values" from undefined. (line 39, file "Code")
Taufik Nurrohman
Kalau error keluar karena mengeklik tombol Run atau Debug tidak mengapa. Yang penting apakah data pesan yang dikirimkan masuk ke email atau tidak?
Anonim
Saya Masagung Hariyandi..
Tidak masuk ke email mas, jadi manual cobanya, email yg dipkk harus gmail atau gmn?
Taufik Nurrohman
Kalau Saya kebetulan memakai GMail, kurang tahu kalau untuk email yang lain. Pengalaman Saya pas gagal mengirim pesan itu karena Saya lupa memperhatikan bagian ini:
MbahDoyok
memungkinkan orang utk attachement gak kang yg ini?
Taufik Nurrohman
Bisa. Tapi mungkin berkas lampiran cuma akan tersimpan dalam bentuk tautan saja di dalam tabel. Saya belum pernah coba. Kalau sudah berhasil membuat dicoba ditempel saja gambar cuplikannya di sini.
MbahDoyok
di bagian add item saya gak nemuin utk pemasangan kolom atacement kang, atau mungkin njen tahu dimana tempatnya?
Taufik Nurrohman
Yo wis...
MbahDoyok
wkwkwkw yowis lah rika
Unknown
:-bd wah! DTE udah berubah aja wajahnya...abis operasi plastik ya mas Taufik? :p
Unknown
Sepertinya bisa diterapkan untuk form order toko online :-bd
Unknown
masih belum paham nih :D
you
gagal mas.. TypeError: Tak dapat memanggil metode "getSheetByName" dari null. (baris 31, file "Kode") untuk melihat Data1 name sheet dimana mas?
you
sheet name sudah saya samakan.. tetep z error kaya di atas.. belum waktunya kali ya.. :(
Taufik Nurrohman
Pada saat mengeklik menu Editor skrip… itu keadaannya ada di halaman formulir atau di halaman spreadsheet? Ke dua halaman tersebut kurang lebih memiliki menu yang sama. Di atas Saya memerintahkan untuk membuka menu Editor skrip… yang ada pada editor spreadsheet.
you
pada editor spreadsheet. mas...
you
sudah saya coba lagi dari awal sekarang yang error ini mas TypeError: Tak dapat membaca properti "values" dari undefined. (baris 39, file "Kode")Tutup
you
Sebagai informasi tambahan... pesan ke spreadsheet masuk tetapi ke email tidak... terima kasih atas tanggapannya mas..
you
alhamdulillah sekarang sudah berhasil mas.. ternyata cuma pengaturan pemberitahuan di spreadsheetnya saja.. saya coba ceklis yang ini Jika formulir telah dikirim maka kirim email
Fahru Rofi
Kalo ikutin SESUAI TUTORIAL yang diberikan sama pak Taufik... pasti jadi no errorr... :D
trims sir.. :-bd
Unknown
trimakasih mas atas infonya tapi saya masih ada yang eror nih, gak mudeng sama sekali ini..
http://prntscr.com/2ckfr3 tolong mas beri solusi 0:) hehehe trimakasih banyak.
you
apakah normal mas kalo selalu ada pesan masuk yang ga jelas.. contoh perihal : zdfasgjasifgjadfgj, nama, website, pesannya ga jelas kaya itu...? ato kira2 mas tahu penyebabnya
Anonim
Atau adakah cara untuk melindungi spya tidak banyak spam yang masuk ke via form ini... soalnya tiap hari banyak skali spam yang msuk k email saya lsat formulir ini..
sugeng wijaya
ngak ada Min bacaan Formulir nya
SMP ISLAM SAWAHAN
Mau tanya, kalo seandainya yang dikirim itu dalam bentuk dokumen word seperti formulir pendaftaran online gitu bagaimana mas?
Taufik Nurrohman
SMPN1BATUSOPANG
cara menghapus data pengisi formulir bagaimana mas?
punya saya hampir penuh....
Taufik Nurrohman
Seperti Excel. Diblok saja sel yang ada isinya lalu tekan tombol Delete.
Unknown
Oooh... ternyata kayak gitu... makasih Mas...
Unknown
Kok punya saya langsung masuk spam yah mas. :(
Taufik Nurrohman
Tinggal ditandai sebagai Bukan Spam saja kan?
Saeful Rahman
Mas sekarang ada yang error pesan yang dikirimkan lewat formulir kontak tidak masuk ke email dan malah muncul pesan error dari google drive :)
Taufik Nurrohman
Iya mas, itu karena ada API Google Drive yang sudah tidak berlaku lagi. Saya masih belum dapat referensi mengenai metode yang baru untuk membuat notifikasi ke email, jadi sementara cuma bisa Saya tulisi pakai banner merah-merah di bagian atas posting ini untuk menunjukkan kalau posting ini perlu diperbaharui.
Pixel Leather
mas kan saya mau bikin olshop tapi blm punya server sendiri jadi pakai blogspot dulu, nah saya mau bikin form pas pemesanan pas form udh beres di isi mau langsung masuk ke google doc, tapi masalahnya kalau di embed formnya kode barang gk bisa otomatis ada, saya mau masukin data kode barang otomatis di embednya jadi langsung ngisi otomatis di form, gimana caranya ? kalau di url request simpenya di bagian mananya
Taufik Nurrohman
Ketemu jawabannya di sini → http://justingale.com/2013/09/url-tricks-for-google-forms-pre-populate-and-automatically-submitting-responses
Unknown
Bagaimana membuat formulir email yang gambar pada postingannya ikut terkirim otomatis