Total Produk
0
jenis barang
Stok Menipis
0
perlu restock
Piutang
Rp 0
belum diterima
Hutang
Rp 0
belum dibayar
Transaksi Terakhir
Stok Menipis
Aplikasi Stok Kaca Otomotif
Di PC, buka app.netlify.com/drop di browser. Tidak perlu daftar.
Buat folder baru di PC โ masukkan file stok-kaca-mobile.html ke dalam folder โ rename file menjadi index.html โ drag seluruh folder ke halaman Netlify.
Netlify memberi link seperti https://amazing-name-123.netlify.app. Buka link ini dari HP maupun PC โ aplikasi langsung jalan!
Karena dibuka via https://, koneksi ke Google Sheets Apps Script sekarang bekerja normal. Ikuti langkah di bawah untuk setup Apps Script.
Menu Extensions โ Apps Script โ hapus semua kode lama โ paste kode berikut:
function doPost(e) {
try {
var raw = e.postData.contents;
var data = JSON.parse(raw);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Data') || ss.insertSheet('Data');
sheet.clearContents();
sheet.getRange(1,1).setValue(JSON.stringify(data));
sheet.getRange(1,2).setValue(new Date().toLocaleString('id-ID'));
var output = ContentService.createTextOutput(JSON.stringify({ok:true}));
output.setMimeType(ContentService.MimeType.JSON);
return output;
} catch(err) {
var output = ContentService.createTextOutput(JSON.stringify({ok:false,error:err.message}));
output.setMimeType(ContentService.MimeType.JSON);
return output;
}
}
function doGet(e) {
try {
var callback = e && e.parameter && e.parameter.callback ? e.parameter.callback : null;
// Simpan data jika ada parameter data (fallback GET)
if (e && e.parameter && e.parameter.data) {
var data = JSON.parse(decodeURIComponent(e.parameter.data));
var ss2 = SpreadsheetApp.getActiveSpreadsheet();
var sh2 = ss2.getSheetByName('Data') || ss2.insertSheet('Data');
sh2.clearContents();
sh2.getRange(1,1).setValue(JSON.stringify(data));
sh2.getRange(1,2).setValue(new Date().toLocaleString('id-ID'));
var result2 = JSON.stringify({ok:true});
var out2 = ContentService.createTextOutput(callback ? callback+'('+result2+')' : result2);
out2.setMimeType(ContentService.MimeType.JAVASCRIPT);
return out2;
}
// Ambil data
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Data');
var result;
if (!sheet || !sheet.getRange(1,1).getValue()) {
result = JSON.stringify({ok:true,data:null});
} else {
var val = sheet.getRange(1,1).getValue();
result = JSON.stringify({ok:true,data:JSON.parse(val)});
}
// Jika ada callback = JSONP request dari HP
var out = ContentService.createTextOutput(callback ? callback+'('+result+')' : result);
out.setMimeType(callback ? ContentService.MimeType.JAVASCRIPT : ContentService.MimeType.JSON);
return out;
} catch(err) {
var errResult = JSON.stringify({ok:false,error:err.message});
var callback2 = e && e.parameter && e.parameter.callback ? e.parameter.callback : null;
var out = ContentService.createTextOutput(callback2 ? callback2+'('+errResult+')' : errResult);
out.setMimeType(ContentService.MimeType.JSON);
return out;
}
}
Type: Web app ยท Execute as: Me ยท Who has access: Anyone โ Deploy โ izinkan โ salin URL