Penggunaan JSON.stringify untuk Komunikasi Array dengan UrlFetchApp.fetch

Untuk mengambil atau memasukkan data dari database Google Sheets yang mempunyai beda authentifikasi, dapat menggunakan UrlFetchApp.fetch pada fungsi Apps Script dan menggunakan metode post.

Dibawah ini adalah contoh pengiriman data array arr, untuk ditangkap dengan fungsi doPost(e):
var email=Session.getActiveUser().getEmail();

var arr=["Mobil","Motor","Sepeda"];

var data = {
	"keyvalue":"idrahasia",
	"idspreadsheet":"--idgooglesheetdatabse--",
	"sheet":"Biodata",
	"ëmail":email,
	"raw":JSON.stringify(arr)
};
var options = {
	'method' : 'post',
	'payload' : data
};
var response=UrlFetchApp.fetch(urlpostdata,options);
return JSON.parse(response.getContentText());
Perbedaan authentifikasi yang dimaksud disini adalah, misal aplikasi Apps Script yang dibuat, karena dibutuhkan untuk mengambil informasi email pengguna, maka authentifikasi akan diarahkan ke pengguna.

Sedangkan file database, Spreadsheet (Google Sheets) yang digunakan harus diberikan authentifikasi administrator saja, untuk keamanan.

Sehingga untuk koneksi antara aplikasi Apps Script yang digunakan pengguna dan database, yang mana seharusnya hanya akses administrator saja, yang memiliki hak penuh, diperlukan aplikasi Apps Script untuk menjembatani kebutuhan tersebut.

Di mana aplikasi Apps Script ini adalah sebagai penangkap pengiriman UrlFetchApp.fetch (doPost(e)) dan memiliki profile authentifikasi administrator, dengan akses semua orang. Tentu dengan pengamanan kunci "keyvalue" yang diisi karakter acak dan diperbaharui secara berkala.

Kode di bawah ini adalah contoh penangkapan parameter raw:
var raw=(e.parameter["raw"]!=null)?JSON.parse(e.parameter["raw"].toString().replace(/'/g, '"')):null;
Dengan menggunakan JSON.parse, raw akan dibaca sebagai data JSON.

Oleh karena itu, dibawah ini adalah contoh konversi data raw di atas untuk ditambahkan ke database Google Sheet:
target = SpreadsheetApp.openById(idspreadsheet);
ss=target.getSheetByName(sheet);
var arr=[];
for(var i in raw){
arr[parseInt(i)]=[];
for(var j in raw[i]){
  arr[parseInt(i)][parseInt(j)]=raw[i][j];
}
}
ss.getRange(1+ss.getLastRow(),1,arr.length,arr[0].length).setValues(arr);

Komentar



Postingan populer dari blog ini

Apps Script untuk Cetak Sertifikat

Menambahkan Random Key sebagai ID Pembeda di Google Sheet dengan Apps Script

Menampilkan Struktur Tabel MySQL dengan JTree

Algorithma Bilangan Prima dengan C++

Menghapus Baris di Google Sheets yang Memiliki Sel Kosong dengan Apps Script

Kaidah Baku untuk Konsistensi Data (PT, Tbk, Pty., & Ltd.)

Keuntungan menjadi Pengguna Berbayar Aplikasi Android

Menyembunyikan Failed Load Images di Blogger

Pengalaman Banding Suspend Aplikasi

Kebodohan Karyawan Menyalahkan Sistem