Halo, Habr! Seringkali, ketika berpikir untuk meluncurkan pilot, manajer mulai memperumit situasi, membangun peta jalan dan menunggu MVP dari pengembang, alih-alih mengambil dan menguji ide sendiri. Di bawah potongan, saya ingin berbagi kisah tentang menciptakan layanan kontrol kualitas berdasarkan formulir Google, VK dan puluhan baris kode, di mana tidak ada pengembang yang terluka, hanya 1 pemasar.

Penafian : dalam artikel ini saya menunggu contoh kode yang akan menimbulkan pertanyaan, keraguan, bahkan air mata dan kebutaan yang berdarah. Dalam pembenaran untuk itu, hanya ada satu hal yang bisa dikatakan - kode ini bekerja seperti Papa Carlo, dan memenuhi misinya 100%, dan beberapa skrip masih berfungsi.
Penilaian Dodo Pizzeria Pertama
Salah satu prinsip utama perusahaan kami -
yang tidak dapat diukur, tidak ada . Pizza ada, yang berarti Anda perlu mengevaluasi kualitasnya.
Semuanya dimulai pada 2013. Saat itu, ada 7 pizza di jaringan. Kemudian di Dodo mereka memutuskan untuk meluncurkan proyek untuk mengontrol kualitas dan standar produk - peringkat pizza terbuka untuk semua mitra.
Dia terlihat seperti itu.

Data diambil dari panggilan pelanggan, ulasan di sosial. jaringan dan sedikit dari Dodo IS (sistem informasi kami).
Nilai tambah yang jelas pada saat itu - peringkat mulai mendorong para pengelola pizza untuk bekerja pada kualitas agar menjadi yang teratas.
Pizzaria Toko Misteri Kedua
Sekitar setahun kemudian, kami menyadari bahwa kami perlu mengevaluasi produk itu sendiri dan mengambil model terkenal - "pembeli misteri". Pada saat itu, kami membuat terobosan - yang pertama di Rusia memutuskan bahwa pelanggan kami akan menjadi pembeli misteri.
Munculnya grup tertutup VK
Awalnya, kami menemukan cara mereka bekerja dengan pembeli misteri di agen yang menyediakan layanan seperti itu. Ternyata mereka berkomunikasi melalui email atau menelepon langsung untuk menawarkan verifikasi.
Opsi ini tidak langsung menggoda kita. Kami pasti tidak akan menelepon, karena bagi kami itu adalah waktu yang lama, tetapi bagi klien itu menyakitkan dan setara dengan spam. Surat digunakan untuk surat massal, tetapi mereka segera ditinggalkan.
Kami datang dengan:
- Untuk komunikasi dengan agen rahasia dan koordinasi cek, mereka menggunakan halaman biasa di VK.
- Untuk mengumpulkan laporan foto, mereka membuat grup di VK dengan dinding terbuka.
- Dan untuk survei layanan, kami memilih formulir Google. Apa? Dengan mudah, Anda tidak perlu memotong layanan terpisah, dan itu ditampilkan dengan baik di ponsel.
- Semua instruksi ada di Google Documents.
Semuanya ada di lutut. Semuanya sebagaimana mestinya untuk startup.
Foto dari pembelanja misteri. Ya, mereka mengukur lebar dengan penggaris, memotong pelek pizza untuk menunjukkan kualitas roti dan adonan.Lebih banyak contoh dari laporan foto dari 2015 ada di sini. Peringkat itu terus berubah, kriteria evaluasi baru ditambahkan. Misalnya, ini adalah 131 poin untuk mengevaluasi restoran pizza Abakan-1.

Seluruh proses neraka adalah bahwa semua pelanggaran dalam poin dicatat secara manual, tidak ada otomatisasi. Dan semua ini dilakukan oleh satu karyawan.
Keajaiban Google spreadsheet
Pada 2016, kami belajar (matang) bahwa manusia telah lama menemukan fungsi selain = SUM. Dan apa yang dapat dilakukan dengan menggunakan skrip dan fungsi impor data antar tabel ... Pembuatan CRM langsung.
Misalnya, untuk mengevaluasi setiap restoran pizza dalam tabel adalah selembar, dan di dalamnya kriteria dan skor evaluasi. 1 pizzeria = 1 daun. Semakin banyak pizza, semakin banyak lembaran. Setiap minggu pertanda baru. Dengan menekan tombol ajaib, lembar templat di tabel diperluas menjadi 120 lembar. Wah, bagus sekali!

Tahap otomatisasi "Pengendalian Dodo" ini memakan waktu sekitar enam bulan. Kami bergerak selangkah demi selangkah: kami mempelajari sesuatu yang baru - diterapkan, kami belajar sesuatu yang baru - diperkenalkan lagi.
Batasan sebagai pendorong kemajuan
Sejak awal, kami berbicara dengan pembeli misteri atas nama akun pribadi di VK. Dan kemudian datang pada hari ketika kami dihadapkan dengan masalah-masalah dari halaman pribadi:
- ada batas 10.000 teman;
- Ada batasan pengiriman pesan: kadang-kadang kami tidak dapat mengirim pesan, karena VK memblokir kami dengan kata-kata "Anda mengirim terlalu banyak pesan, datanglah besok".
Biasanya VK diblokir mengirim pesan sekitar 16:00. Itu adalah saat yang menyenangkan ketika tim bisa beristirahat.
Perlahan-lahan, kami menemui hampir semua keterbatasan VK dan hampir berhasil berhenti mencintai situs ini. Tapi keajaiban terjadi, dan VK memberi kelompok kesempatan untuk menghubungkan widget pesan, bot obrolan dan barang lainnya.
Sebenarnya, kemungkinan ini lebih awal dari Desember 2016, tetapi dengan batasan kritis bagi kami: grup hanya dapat menanggapi pesan dalam waktu 10 hari dari saat mengirim pesan terakhir dari klien. Ketika mereka menghilangkan batasan ini, kehidupan tim kami mulai berkilau dengan warna-warna baru. Sejak saat itu, kami telah memulai jalur otomatisasi menggunakan VK API dan Google spreadsheet.
Ketakutan dan Kebencian dalam Skrip Pengguna
Awalnya, untuk menjadi pembelanja misterius, Anda harus mengisi formulir, lalu mendaftar ke grup, menulis kata sandi kepada kami dan menunggu kami merespons. Menunggu ini bisa bertahan hingga 48 jam. Itu lama tidak senonoh dan keinginan untuk melakukan pemeriksaan setelah pendaftaran tersebut memudar.
Dengan pengetahuan baru, kami mulai mengotomasi pendaftaran.
Kami memiliki beberapa metode API, satu formulir, beberapa lusinan tabel, halaman arahan, bot dalam PHP, skrip dalam tabel yang ditulis oleh pemasar paling keren Dodo dan CFO pertama Dodo dalam satu orang, lusinan templat pesan untuk berbagai situasi. Lalu saya bahkan tidak tahu bahwa ini disebut skrip pengguna:
- Pembeli misteri mengisi kuesioner (ini adalah versi yang sudah ketinggalan zaman dan sekarang tidak berfungsi).
- Data dari formulir jatuh pertama ke dalam database, lalu ke dalam tabel. Bot pertama kali mengetuk basis data untuk memeriksa data tentang profil, karena batas waktu respons pelat dalam puluhan ribu baris besar, dan basis data mencerna dengan mudah).
- Setelah mengisi kuesioner dalam formulir, sebuah pesan muncul di layar: "Terima kasih, tetap bergabung dengan grup (tautan) dan menulis kata sandi" Sherlock "".
- Kemudian pembelanja misterius mengirim aplikasi untuk bergabung dengan grup dan menulis kata sandi "Sherlock". Kata adalah pemicu untuk menjalankan skrip validasi:
- permintaan dikirim ke database apakah agen cocok untuk kita berdasarkan usia;
- jika demikian, maka orang tersebut ditambahkan ke grup, dan di tabel di seberang kuesioner kandidat, statusnya ok / tidak ok
- Lebih banyak data dicat dengan warna pirus dan itu penting. Jadi dengan mata saya, lebih mudah untuk memahami siapa yang cocok dengan kita dan dengan siapa kita bisa berbicara. Script dicat merah profil yang tidak cocok;
- Selanjutnya, pembeli rahasia diterima secara otomatis dalam grup, dan pesan dikirim ke obrolan dengan langkah dan instruksi lebih lanjut.

Itulah otomatisasi registrasi. Sekarang seluruh prosedur menjadi hampir sederhana dan mudah dimengerti.
Selanjutnya, semuanya berjalan seperti jarum jam. Menjadi jelas bahwa kami dapat mengirim pesan melalui tabel langsung ke PM ke agen rahasia melalui pesan grup.

Dan Anda hanya memiliki 46 baris kode!
function send() { var range = SpreadsheetApp.getActiveSpreadsheet().getActiveRange(); var ss = range.getValues(); var carray = range.offset(0, -2).getValues(); var marray = range.offset(0, 1).getValues(); var iarray = range.offset(0, 0).getValues(); ss.forEach(function (r, i) { var tt = range.getRowIndex(); var add = tt + i; var check = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('L' + add).getValue(); if (check != '') { SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('K' + add).setValue("").setBackground("#ffff00"); return; } var payload = { "message" : marray[i][0], "user_id" : r[0], "access_token" : " ", "v" : "5.74" }; var options = {
Dalam tabel, kami membuat teks pesan dan membuat surat pribadi menggunakan halaman id. Kami juga berhenti menyalin dan mengirim pesan secara manual. Pada waktu puncak, kami dapat mengirim hingga 3000 pesan dalam 45 menit menggunakan tabel. Jika kami melakukannya dengan tangan, maka saya tidak akan menulis artikel ini, tetapi akan terus mengirim pesan.
Selanjutnya, saya memberi contoh tablet ajaib seperti itu. Saya berusaha sangat keras untuk membuat UX / UI yang jelas dan fungsional. Dengan mengklik tombol merah, distribusi pesan diluncurkan dengan proposal untuk melakukan pemeriksaan rahasia.

Lebih banyak fitur untuk mengotomatisasi proses neraka
Perusahaan memiliki banyak formulir Google yang membantu kami mengumpulkan beberapa metrik dari pizzeria secara berkelanjutan. Setiap formulir memiliki daftar pizza yang perlu diperbarui. Ada 53 formulir seperti itu secara total, masing-masing sebelumnya diperbarui secara manual.
Sedikit lelah dengan pekerjaan ini, kami menyadari bahwa bisnis ini bisa otomatis. Saya kembali beralih ke pemasar kami, setelah satu atau dua jam semuanya sudah siap dan hanya 47 baris kode.
function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var range = ss.getActiveRange(); var forms = range.offset(0, 1).getValues(); var items = range.offset(0, 2).getValues(); var sources = range.offset(0, 3).getValues(); var ranges = range.offset(0, 4).getValues(); forms.forEach(function (r,i) { var form = FormApp.openById(forms[i]); var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sources[i]).getRange(ranges[i]).getValues(); var arr = []; values.forEach(function (el,ei) { if (el[0] != '') { arr.push(el[0]); } }); var item = form.getItems()[Number(items[i])].asListItem(); item.setChoiceValues(arr); Logger.log(item.getTitle()); }); } function getData() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var range = ss.getSheetByName(" ").getRange("A2:C").getValues(); Logger.log(range); } function onOpen() { var ui = SpreadsheetApp.getUi();
Bentuknya berbeda, dengan daftar pizza yang berbeda dan lokasi daftar pizza dalam bentuk. Di suatu tempat kita membutuhkan orang asing, di suatu tempat dari Rusia.

Kolom B dan C memberi tahu skrip dalam bentuk mana untuk memperbarui dan di mana formulir menampilkan daftar. Dan kolom D dan E, dari lembar mana dan rentang Anda perlu mengambil daftar untuk memperbarui.
Selanjutnya, mereka menetapkan pemicu untuk menjalankan skrip sekali sehari dan dengan demikian mampu mengalahkan proses pembaruan formulir pertama untuk departemen mereka, kemudian untuk seluruh perusahaan. Skrip ini masih berfungsi.
Kasus paling sulit tentang siput
Pernah kami ingin menerima rekaman audio dari cek pengiriman.
Dari mana asal rekaman audio: pembeli misteri mencatat pertemuan kurir dengan klien sebagai pesan audio di VK. Biasanya ini adalah rekaman audio 10-15 detik.
Bagaimana kami mendapatkannya: mereka mengambil 20 pesan terakhir pada alamat VK pembelanja misteri, mencari kata "Ulica" di antara mereka, lalu melangkah mundur satu pesan dan mengambil tautan ke rekaman audio. (Spoiler: bukan kata terbaik, sering kali mereka menulis kata "Siput") kepada kami.
Sudah ada lebih banyak baris kode, bersiap-siaplah.
function getLastAudio() { var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var token = ''; var range = ss.getActiveRange().getValues(); var tt = ss.getActiveRange().getRowIndex(); range.forEach(function (r,i) { var ri = tt + i; var cuid = r[0]; var ci = 0; var payload1 = { "q" : '', 'peer_id' : r[0], "access_token" : token, "v" : "5.73", }; var options1 = {
Google spreadsheet tidak elastis, tetapi saya adalah pembuat enkode yang begitu-begitu
Jadi semuanya berputar, berputar, sampai kami tumbuh hingga 60 ribu pembeli misteri pada awal 2018.
Jadi, kita sudah mengalami batasan tabel. Kemudian satu tabel bisa berisi tidak lebih dari 2 juta sel, dan kami menggunakan 1,6 juta sel di salah satu label departemen tersibuk, di mana 135 ribu sel memiliki semua jenis fungsi tabel.
Backend seperti itu. Semuanya sangat melambat dan ketika beberapa orang bekerja bersama, plat itu berbunyi, "Dokumen itu terlalu populer, kembalilah nanti."
Kemudian menjadi jelas bahwa saya adalah encoder yang buruk, sistem tidak menahan beban dan saya perlu diganti.
Dan kemudian pengembang yang sebenarnya datang ...
Tetapi ini adalah kisah yang sangat berbeda dan kami akan menulisnya nanti. Saya berharap contoh-contoh ini akan membantu manajer dalam proyek mereka, di mana ada banyak proses neraka. Proses dapat dan harus otomatis, baik tabel dan zapier (kami juga menggunakannya) dapat membantu, dan menampung solusi jika ada sumber daya, kami tidak memilikinya pada awalnya.
Jika Anda memiliki seseorang di perusahaan yang mengetahui sesuatu tentang skrip, maka ia cocok untuk mengatur proses neraka di tablet. Jika Anda sendiri ingin mempelajari sesuatu seperti ini,
Telegram memiliki saluran yang sangat baik untuk ini, dari mana saya mengambil informasi tentang fungsi dan skrip.
Nah, masthead untuk semua manajer - mengetahui tabel setiap hari menghemat waktu ketika bekerja dengan data dan memungkinkan Anda untuk berpikir dan memahami setidaknya sedikit apa yang dilakukan pengembang dengan data dan apa yang dapat Anda lakukan dengan data secara umum.