workSheetId='ID GOOGLE SPREADSHEET';
function doPost(e) {
var jsonData={};
if(e.parameter){
jsonData=e.parameter;
}
return aplikasi(e,jsonData);
}
function doGet(e) {
var jsonData={};
if(e.parameter.data){
jsonData=JSON.parse(e.parameter.data);
}
return aplikasi(e,jsonData);
}
function aplikasi(e,dataUser){
try{
var spreadsheet = SpreadsheetApp.openById(workSheetId),
namasheet = spreadsheet.getSheetByName(e.parameter.tabel),
informasi, aksi=e.parameter.aksi,kolom=[],cari=[],namabuattabel;
if(e.parameter.namatabel){
namabuattabel=e.parameter.namatabel;
}
if(e.parameter.kolom){
kolom=JSON.parse(e.parameter.kolom)||[];
}
if(e.parameter.cari){
cari=JSON.parse(e.parameter.cari)||[];
}
switch(aksi) {
case "buat":
//?aksi=buat&kolom=["namabarang","harga","stok"]&namatabel=barang
informasi=buatTabel(spreadsheet,namabuattabel,kolom)
break;
case "tampil":
//?aksi=tampil&tabel=sheet1
//?aksi=tampil&tabel=sheet1&cari=["uid","wgkrhdmldi"]
//?aksi=tampil&tabel=sheet1&cari=["uid","wgkrhdmldi"]&kolom=["nama"]
informasi=bacaTabel(namasheet,kolom,cari);
break;
case "tambah":
//?aksi=tambah&tabel=sheet1&data={"nama":"ali","terlambat":"iya","kelas":"x","nilai":77,"pekerjaan":"mancing"}
informasi=tambahData(namasheet,dataUser);
break;
case "ubah":
//?aksi=ubah&tabel=sheet1&cari=["uid","wgkrhdmldi"]&data={"nama":"ali","terlambat":"iya","kelas":"x","nilai":77,"pekerjaan":"mancing"}
informasi=ubah(namasheet,cari,dataUser);
break;
case "hapus":
//?aksi=hapus&tabel=sheet1&cari=["uid","wgkrhdmldi"]
informasi=hapus(namasheet,cari);
break;
default:
informasi = "parameter tidak lengkap";
}
return pesan(true,informasi);
}catch (kesalahan) {
return pesan(false,"nama sheet/nama tabel/kolom tidak ada/ :" +dataUser);
}
}
function tambahData(sheetnya,jsonData){
var query=jsonData;
var sheet=sheetnya;
try{
var judul = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var kolomJudul=judul.shift();
var lineItem = [];
for (var i = 0; i < kolomJudul.length; i++) {
var kolom=query[kolomJudul[i]];
if(!kolom){
lineItem[i]='';
}else{
lineItem[i]=kolom;
}
}
var karakter = 'abcdefghijklmnopqrstuvwxyz';
var uID = '';
for (var i = 0; i < 10; i++) {
uID += karakter.charAt(Math.floor(Math.random() * karakter.length));
}
lineItem[0] = uID;
sheet.appendRow(lineItem);
buat=lineItem;
}catch(kesalahan){
buat= 'Error saat membuat data :'+kesalahan;
}
return buat;
}
function ubah(sheetnya,cari,jsonData){
var sheet=sheetnya;
try{
var cek=bacaTabel(sheet,[],cari);
if(cek.length>0){
var query=jsonData;
var judul = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var kolomJudul=judul.shift();
for (var i = 0; i < kolomJudul.length; i++) {
var kolom=query[kolomJudul[i]];
if(kolom){
sheet.getRange(cek[0]['index'],i+1).setValue(kolom);
}
}
buat="Berhasil merubah data! index : "+cek[0]['index'];
}else{
buat="data tidak ada!";
}
}catch(kesalahan){
buat= 'Error saat merubah data'+kesalahan;
}
return buat;
}
function hapus(sheetnya,cari){
var sheet=sheetnya;
try{
var cek=bacaTabel(sheet,[],cari);
if(cek.length>0){
sheet.deleteRow(cek[0]['index']);
buat="Berhasil menghapus! index : "+cek[0]['index'];
}else{
buat="data tidak ada!";
}
}catch(kesalahan){
buat= 'Error saat menghapus data'+kesalahan;
}
return buat;
}
function buatTabel(spreadsheet,namasheet,bacaKolom){
var buat;
var field=[];
field=bacaKolom;
if(field.length!=0){
try{
var newSheet = spreadsheet.insertSheet();
newSheet.setName(namasheet);
newSheet.getRange(1,1).setValue('uid');
for (var i=0;i<field.length;i++){
newSheet.getRange(1,i+2).setValue(field[i]);
}
buat='berhasil';
}catch(kesalahan){
buat= 'Error saat membuat tabel'+kesalahan;
}
}
return buat;
}
function pesan(status,isipesan){
var json ={koneksi:status,data:isipesan};
return ContentService
.createTextOutput(JSON.stringify(json))
.setMimeType(ContentService.MimeType.JSON);
}
function bacaTabel (sheetnya,bacaKolom,cari){
var sheet = sheetnya;
var jumlahBaris = sheet.getLastRow();
var jumlahKolom = sheet.getLastColumn();
var dataSheet = sheet.getRange(1, 1, jumlahBaris, jumlahKolom).getValues();
var kolomJudul = dataSheet[0],
indexBaris=2;
susun = [],
data = dataSheet.slice(1, dataSheet.length);
customKolom=bacaKolom||[];
for (var baris=0; baris<data.length; baris++) {
var namaKolom = {};
if(customKolom.length==0){
for (var urutanKolom=0; urutanKolom<kolomJudul.length; urutanKolom++){
namaKolom[kolomJudul[urutanKolom]] = data[baris][urutanKolom];
}
}else{
for (var urutanKolom=0; urutanKolom<kolomJudul.length; urutanKolom++){
if(urutanKolom==0){
namaKolom[kolomJudul[urutanKolom]] = data[baris][urutanKolom];
}else{
for(var urutanCustom=0;urutanCustom<customKolom.length;urutanCustom++){
if(customKolom[urutanCustom]==kolomJudul[urutanKolom]){
namaKolom[kolomJudul[urutanKolom]] = data[baris][urutanKolom];
}
}
}
}
}
namaKolom['index']=indexBaris;
susun.push(namaKolom);
indexBaris++;
}
var hasil;
if(cari.length==0){
hasil=susun;
}else{
var rumusFilter = (array, key, value) => array.filter(x => x[key.toString() ] == value.toString() );
var filterData = rumusFilter(susun, cari[0].toString() ,cari[1].toString());
if(filterData.length>0){
hasil=filterData;
}else{
hasil="data yang dicari tidak ada :"+cari;
}
}
return hasil;
}
Bang, apakah datanya bisa ditampilkan dalam bentuk data table?
ReplyDelete