Kelola integrasi Google Sheets dan data jurnal
Klik "Refresh Data" untuk memuat data dari Google Sheets
Buka Google Apps Script
Kunjungi script.google.com dan buat project baru
Copy Script Template
Salin kode Apps Script yang tersedia di bawah ini ke dalam project
Deploy sebagai Web App
Klik "Deploy" → "New Deployment" → Pilih "Web app" → Set "Execute as: Me" → Set "Who has access: Anyone"
Sistem Otomatis Aktif
Setelah deploy, sistem akan otomatis membaca data dari Google Sheets untuk menampilkan progres real-time
function doPost(e) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
let dataSheet = ss.getSheetByName('Data Jurnal');
// Create sheet if doesn't exist
if (!dataSheet) {
dataSheet = ss.insertSheet('Data Jurnal');
dataSheet.getRange(1, 1, 1, 21).setValues([[
'Tanggal', 'Nama', 'NISN', 'Kelas', 'Bulan', 'Minggu',
'Bangun Pagi', 'Beribadah', 'Berolahraga', 'Makan Sehat',
'Gemar Belajar', 'Bermasyarakat', 'Tidur Cepat', 'Total',
'Hambatan Bangun Pagi', 'Hambatan Beribadah', 'Hambatan Berolahraga',
'Hambatan Makan Sehat', 'Hambatan Gemar Belajar', 'Hambatan Bermasyarakat',
'Hambatan Tidur Cepat'
]]);
}
const data = JSON.parse(e.postData.contents);
// Handle getData action for progress display
if (data.action === 'getData') {
const dataRange = dataSheet.getDataRange();
const values = dataRange.getValues();
if (values.length <= 1) {
return ContentService.createTextOutput(JSON.stringify({status: 'success', data: []}));
}
const headers = values[0];
const dataRows = values.slice(1);
const formattedData = dataRows.map(row => {
const item = {};
headers.forEach((header, index) => {
switch(header) {
case 'Tanggal': item.timestamp = row[index]; break;
case 'Nama': item.nama = row[index]; break;
case 'NISN': item.nisn = row[index]; break;
case 'Kelas': item.kelas = row[index]; break;
case 'Bulan': item.bulan = row[index]; break;
case 'Minggu': item.minggu = row[index]; break;
case 'Bangun Pagi': item.bangunPagi = row[index]; break;
case 'Beribadah': item.beribadah = row[index]; break;
case 'Berolahraga': item.berolahraga = row[index]; break;
case 'Makan Sehat': item.makanSehat = row[index]; break;
case 'Gemar Belajar': item.gemarBelajar = row[index]; break;
case 'Bermasyarakat': item.bermasyarakat = row[index]; break;
case 'Tidur Cepat': item.tidurCepat = row[index]; break;
case 'Total': item.totalScore = row[index]; break;
}
});
return item;
});
return ContentService.createTextOutput(JSON.stringify({status: 'success', data: formattedData}));
} else {
// Save journal data
dataSheet.appendRow([
data.timestamp, data.nama, data.nisn, data.kelas, data.bulan, data.minggu,
data.bangunPagi, data.beribadah, data.berolahraga, data.makanSehat,
data.gemarBelajar, data.bermasyarakat, data.tidurCepat, data.totalScore,
data.bangunPagiHambatan, data.beribadahHambatan, data.berolahragaHambatan,
data.makanSehatHambatan, data.gemarBelajarHambatan, data.bermasyarakatHambatan,
data.tidurCepatHambatan
]);
return ContentService.createTextOutput(JSON.stringify({status: 'success', message: 'Data saved'}));
}
}
✅ Google Sheets: Terhubung dan siap menerima data
✅ Script URL: ...AKfycbyNiOYqaog2CZBaCJpdY22G4fNNq9tSp_pZH0iTGqK62X8uhvWx0U0h1JTTI9vS1LEx/exec
✅ Status: Form jurnal siap digunakan semua pengguna
✅ Backup: Otomatis tersimpan lokal + cloud
✅ Multi-device: Akses dari perangkat manapun
🔗 URL Script: Pre-configured dan siap pakai
📊 Google Sheets: Otomatis membuat sheet "Data Jurnal"
🎨 Format Data: Header dan styling otomatis
💾 Backup: Data tersimpan lokal sebagai fallback
🔄 Sinkronisasi: Real-time ke Google Sheets
✅ Google Sheets: Otomatis terhubung saat form diakses
✅ Real-time Sync: Data langsung tersimpan ke cloud
✅ Multi-device: Akses dari perangkat manapun
✅ Auto-backup: Backup lokal otomatis
💡 Sistem Terintegrasi: Tidak perlu konfigurasi manual. Google Sheets otomatis aktif saat form digunakan.