Membuat Formulir Kontak Google Doc Agar Bisa Mengirimkan Datanya Langsung ke Kotak Pesan Email

Tabel Konten
  1. Membuat Formulir Kontak 
  2. Mengelola Data yang Masuk 
  3. Menonaktifkan Notifikasi pada Kiriman Email Spam 
  4. Bacaan Lebih Lanjut 

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:

Contact results - Google Drive
Data kontak langsung terlihat di pesan masuk.

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:

Create a new form - Google Drive
Membuat formulir baru.

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:

Form configuration - Google Drive
Membuat formulir.

Pada bagian Laman Konfirmasi, tuliskan pesan terima kasih yang ingin Anda tampilkan ketika pesan telah berhasil terkirim:

Sent message setup - Google Drive
Menyunting pesan ucapan terima kasih.

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:

Create new spreadsheet - Google Drive
Membuat spreadsheet baru.

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:

Script editor menu - Google Drive
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:

Sheet rename - Goole Drive
Memberi nama sheet.

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.

Script trigger authorization - Google Drive
Pemicu proyek.…

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:

  1. Pastikan nama sheet tidak mengandung karakter spasi. Ini mungkin bisa menimbulkan errorSheet Saya mengandung karakter spasi, tetapi Saya tidak mengalami masalah itu.
  2. 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.
  3. 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.

Bacaan Lebih Lanjut 

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

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

          Pada kolom Events, pastikan opsi yang terpilih adalah From spreadsheet dan On form submit.

  • 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?

  • 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

      memungkinkan orang utk attachement gak kang yg ini?

      — Muhammad Hidayatullah

  • 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. :(

  • 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

  • Unknown

    Bagaimana membuat formulir email yang gambar pada postingannya ikut terkirim otomatis

Komentar telah ditutup.