Google memiliki kemampuan yang luar biasa dan sering diabaikan dalam penawaran skrip Google mereka. Saya selalu menghindarinya dengan semacam PTSD sejak menggunakan VBscript di MSOffice. Namun baru-baru ini saya punya alasan untuk membuat fungsi khusus;
Persyaratan ini berarti saya mulai menjelajahi skrip Google lebih dalam, sejujurnya saya terkejut dengan kemampuan yang telah lama saya sembunyikan dari saya (https. // pengembang. google. com/apps-script/guides/sheets/functions) jadi saya pikir dengan semua skrip ini, dapatkah saya membuat webhook baris demi baris dari skrip Google, jawabannya adalah YA, dan itu sangat mudah
Aplikasi web terlebih dahuluSaya tidak langsung membuka webhook, pertama saya ingin mencoba sesuatu yang saya baca tentang membuat Google sheet menjadi aplikasi web dan menerima webhook, itu cukup sederhana
Buat lembar baru dengan beberapa data
Contoh yang digunakan di bawah ini bersifat publik dan tersedia di sini (buat salinan untuk digunakan sendiri)
👍
Nama Lembar
Jangan lupa beri nama yang bagus pada sheet Anda
Buka editor skrip
- Klik Alat dari bilah menu
- Pilih subitem "Editor skrip".
Tambahkan kode skrip
Kode di bawah ini dapat menggantikan Kode default. file gs
- sharedKey pada baris 14 perlu diganti dengan kunci bersama Anda
- sheetName pada baris 17 harus cocok dengan nama sheet Anda
Kode. gs
// Required function for publishing Google script app // This funciton fires when a GET message is recieved function doGet(e) { return HtmlService.createHtmlOutput("doGet request"); } // Required fucntion for publishing Google script app // This fucntion fires when a POST message is recieved function doPost(e) { // Pandadoc Shared key found on Pandadoc webhook configratuion page. // //app.pandadoc.com/a/#/settings/integrations/webhook var sharedKey = "[Your Shared Key]"; //Name of Sheet to be used. var sheetName = "Sheet1"; try { // signature sent from PandaDoc var pandadocSignature = e.parameter.signature; // payload to be used to genreate signature for verification var input = e.postData.contents; // genreated signature from input & key var byteArraySig = Utilities.computeHmacSha256Signature(input, sharedKey); // convert byte array into hex string var generatedSignature = byteArraySig.reduce(function(str,chr){ chr = (chr < 0 ? chr + 256 : chr).toString(16); return str + (chr.length==1?'0':'') + chr; },''); // compare generated signature with pandadoc signature. // if they do not match the key has changed or payload has been modified if ( pandadocSignature != generatedSignature ) { throw new Error( "Webhook signature does not match. Key changed or payload has been modified!" ); } // convert payload into js object // webhook events are only for one document so we can just extract the first array object var data = JSON.parse(e.postData.contents)[0].data; var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); // write some data to Google sheet. There is other data that can be used but these are common data point for every document sheet.appendRow([data.id, data.name,data.status, data.date_created,data.date_modified, data.expiration_date, data.created_by.email,data.grand_total.currency, data.grand_total.amount ]); } catch (error) { // if something goes wrong we will append message to google sheet so it can be easily found var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); sheet.appendRow([error]) } return HtmlService.createHtmlOutput("doPost received"); }
Simpan proyek dan beri nama
Publikasikan Aplikasi web
- Klik Terbitkan dari bilah menu
- Klik "Terapkan sebagai aplikasi web. "
- Berikan proyek nomor versi
- Setel akses aplikasi ke "Siapa saja, bahkan anonim"
❗️
Otentikasi - Verifikasi Tanda Tangan
PandaDoc mengirimkan Tanda Tangan dengan setiap kiriman webhook. Tanda tangan ini bersama dengan kunci bersama yang ditemukan di PandaDoc. Dapat digunakan untuk memverifikasi bahwa webhook berasal dari PandaDoc dan muatannya belum dimodifikasi
Jika diminta tinjau dan otorisasi izin
Simpan URL Webhook
Salin URL aplikasi web dari perintah Sukses. Ini akan digunakan untuk membuat webhook PandaDoc Anda
Seharusnya terlihat seperti //script.google.com/macros/s/[Some-Long-ID]/exec
Buat PandaDoc Webhook
📘
Rencana perusahaan
Webhook adalah fitur PandaDoc Enterprise Plan jika Anda tidak dapat membuat webhook, harap verifikasi paket Anda dan pilih "Akun" di panel kiri
Buat Webhook
Pergi untuk mengaktifkan webhook jika tidak dan klik ke pengaturan webhook
Klik tombol "Buat webhook".
Beri nama webhook dan salin URL dari lembar google Anda ke "Webhook endpoint URL" Klik Simpan untuk membuat webhook
Setelah webhook dibuat, buka kembali pengaturan untuk mendapatkan SharedKey Anda
Salin SharedKey dan tempelkan ke baris 14 Kode Lembar Google Anda. file gs
📘
Perbarui Nama Lembar
Jika sheet Anda tidak bernama "Sheet1", Anda perlu memperbarui nama sheet di Kode. file gs. Ini dapat ditemukan di baris 17 variabel "sheetName"
Publikasikan GoogleSheet dengan Kunci yang diperbarui
- Publikasikan dari bilah menu
- Klik "Terapkan sebagai aplikasi web. "
- Pilih "Baru" dari tarik-turun versi Proyek
- Masukkan versi baru
- Klik Perbarui
🚧
Publikasikan kode baru
Setiap kali perubahan dilakukan pada Kode Anda. gs file itu perlu diterbitkan dengan versi baru sebelum diterapkan
Tes
Hasil yang diharapkan adalah baris baru ditambahkan ke Google Sheet setiap kali dokumen dibuat, dikirim, dilihat, diselesaikan, atau dibayar
Untuk mengujinya, mulailah dengan membuat dokumen baru di PandaDoc. Baris baru akan muncul di akhir Google Sheet Anda. Seharusnya terlihat mirip dengan data di bawah ini
Kesalahan Umum
Jika kunci yang dibagikan tidak cocok dengan yang ditemukan di Pandadoc, Anda akan menerima kesalahan 'Error. Tanda tangan webhook tidak cocok. Kunci diubah atau payload telah dimodifikasi. '