Membuat Formulir Kontak Google Doc Agar Bisa Mengirimkan Datanya Langsung ke Kotak Pesan Email
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 Comments:
Ternyata Bisa Dimanipulasikan Google Doc Dengan Email.
Kalau Membuat Email Balasannya Gimana Mas Taufik..?
Otomatis Terbalaskan Dengan Sebuah Teks Tertentu.
Lihat gambar ini:
[img]http://3.bp.blogspot.com/-KOjc0ajwCEI/UkLnKT-m8hI/AAAAAAAAHwc/sbLi4HhiokI/s1600/google-drive-contact-result.png[/img]
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.
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...?
keren gan.. thanks bgt nih
wah pernah kuterapkan ini, tapi ternyata menggunakan PHP lebih seru...
WOW tampilan baru :-bd
saya akan mencoba menerapkannya mas taufik :)
Mencoba mengkloning lagi ya ?
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???
di datengin kagak master web text area rich! ada filesaver kan tuh?
begini contohna master
http://rx.hu/AUzz
hihihi :D sukses \o/
kotak searchnya full stylish...mantappp...pakek press key Ctrl + F :-bd
Cocok Jadi GM kamu Mas Taufik :-bd
=D
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 :)
Oh, kalau yang itu Saya kurang tahu.
baru ingat lagi :-bd telimikiciw~
mantap gan
terima kasih telah meluruskan pertanya'an saya :)
harus tau nih :D
Kalau yang ini belum pernah saya coba :)
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")
Kalau error keluar karena mengeklik tombol Run atau Debug tidak mengapa. Yang penting apakah data pesan yang dikirimkan masuk ke email atau tidak?
Saya Masagung Hariyandi..
Tidak masuk ke email mas, jadi manual cobanya, email yg dipkk harus gmail atau gmn?
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:
Pada kolom Events, pastikan opsi yang terpilih adalah From spreadsheet dan On form submit.
memungkinkan orang utk attachement gak kang yg ini?
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.
di bagian add item saya gak nemuin utk pemasangan kolom atacement kang, atau mungkin njen tahu dimana tempatnya?
Yo wis...
wkwkwkw yowis lah rika
:-bd wah! DTE udah berubah aja wajahnya...abis operasi plastik ya mas Taufik? :p
Sepertinya bisa diterapkan untuk form order toko online :-bd
masih belum paham nih :D
gagal mas.. TypeError: Tak dapat memanggil metode "getSheetByName" dari null. (baris 31, file "Kode") untuk melihat Data1 name sheet dimana mas?
sheet name sudah saya samakan.. tetep z error kaya di atas.. belum waktunya kali ya.. :(
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.
pada editor spreadsheet. mas...
sudah saya coba lagi dari awal sekarang yang error ini mas TypeError: Tak dapat membaca properti "values" dari undefined. (baris 39, file "Kode")Tutup
Sebagai informasi tambahan... pesan ke spreadsheet masuk tetapi ke email tidak... terima kasih atas tanggapannya mas..
alhamdulillah sekarang sudah berhasil mas.. ternyata cuma pengaturan pemberitahuan di spreadsheetnya saja.. saya coba ceklis yang ini Jika formulir telah dikirim maka kirim email
Kalo ikutin SESUAI TUTORIAL yang diberikan sama pak Taufik... pasti jadi no errorr... :D
trims sir.. :-bd
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.
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
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..
ngak ada Min bacaan Formulir nya
Mau tanya, kalo seandainya yang dikirim itu dalam bentuk dokumen word seperti formulir pendaftaran online gitu bagaimana mas?
cara menghapus data pengisi formulir bagaimana mas?
punya saya hampir penuh....
Seperti Excel. Diblok saja sel yang ada isinya lalu tekan tombol Delete.
memungkinkan orang utk attachement gak kang yg ini?
— Muhammad Hidayatullah
Oooh... ternyata kayak gitu... makasih Mas...
Kok punya saya langsung masuk spam yah mas. :(
Tinggal ditandai sebagai Bukan Spam saja kan?
waduh , itu autoresponder sob, kalo punya cPanel pasti bisa di set automatis reply jika mengirim ke email yang bersangkutan. :D
emang dia Game Master apa ......
hahaha
Mas sekarang ada yang error pesan yang dikirimkan lewat formulir kontak tidak masuk ke email dan malah muncul pesan error dari google drive :)
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.
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
Ketemu jawabannya di sini → http://justingale.com/2013/09/url-tricks-for-google-forms-pre-populate-and-automatically-submitting-responses
Bagaimana membuat formulir email yang gambar pada postingannya ikut terkirim otomatis
Post a Comment
<< Home