Dashboard Pelaporan PMI
Sistem Pelaporan Kegiatan dan Kejadian
Form Input Laporan
📊 Dashboard Statistik PMI
Statistik Kegiatan
Semua Waktu0
Total Laporan
0
Total Korban
Rp 0
Total Pengeluaran
Rp 0
Total Pemasukan
Perbandingan Periode
Rata-rata Laporan per Bulan
0
Rata-rata Korban per Bulan
0
Bulan Tersibuk
–
Jenis Kejadian Terbanyak
–
Distribusi Jenis Kejadian
Laporan per Bulan
Pelayanan Pasien dari/ke Rumah Sakit
📈 Laporan Statistik Tahunan PMI
Ringkasan per Tahun
| Tahun | Laporan | Korban | Biaya BBM |
|---|
Detail Bulanan
–
Tahun Tersibuk
0
Tahun Aktif
0
Rata-rata/Tahun
📈
Trend
📊 Statistik Kecelakaan Lalu Lintas PMI Banjarnegara
0 kasus ditangani
Jumlah Kasus per Bulan
Trend Korban Kecelakaan
0
Total Korban
0
Rata-rata per Kasus
–
Bulan Tertinggi
Rp 0
Total Biaya BBM
Data Laporan
| Tanggal ↕️ | Jenis Kejadian ↕️ | Lokasi | Korban ↕️ | Petugas | Aksi |
|---|---|---|---|---|---|
| Belum ada data laporan | |||||
Detail Laporan
🔗 Integrasi Google Sheets
Status Koneksi:
Tidak Terhubung
URL dari Google Apps Script yang sudah di-deploy
ID dari Google Spreadsheet (dari URL)
Nama sheet di dalam spreadsheet
Opsi Sinkronisasi
Sedang menyinkronkan data…
0 dari 0 data terkirim
📋 Cara Setup Google Sheets:
- Buat Google Spreadsheet baru
- Buat Google Apps Script dengan kode yang disediakan
- Deploy script sebagai web app
- Copy URL dan Spreadsheet ID ke form di atas
- Test koneksi dan mulai sinkronisasi
📄 Kode Google Apps Script
Code.gs
function doPost(e) {
try {
const data = JSON.parse(e.postData.contents);
const spreadsheetId = data.spreadsheetId;
const sheetName = data.sheetName || 'Laporan PMI';
const reports = data.reports;
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
let sheet = spreadsheet.getSheetByName(sheetName);
// Create sheet if it doesn't exist
if (!sheet) {
sheet = spreadsheet.insertSheet(sheetName);
}
// Clear existing data
sheet.clear();
// Set headers
const headers = [
'ID', 'Tanggal', 'Jenis Kejadian', 'Waktu Kejadian', 'Waktu Update',
'Lokasi', 'Jumlah Korban', 'Detail Korban', 'Kronologi', 'Peralatan',
'Kendaraan', 'Petugas PMI', 'Pengeluaran BBM', 'Pemasukan',
'Pelayanan RS', 'Nama RS', 'Foto Kegiatan'
];
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
sheet.getRange(1, 1, 1, headers.length).setFontWeight('bold');
sheet.getRange(1, 1, 1, headers.length).setBackground('#4285f4');
sheet.getRange(1, 1, 1, headers.length).setFontColor('white');
// Add data
const rows = reports.map(report => {
let korbanInfo = '';
if (report.korbanData && report.korbanData.length > 0) {
korbanInfo = report.korbanData.map((korban, index) =>
`${index + 1}. ${korban.nama || 'N/A'} (${korban.usia || 'N/A'} th, ${korban.jenisKelamin || 'N/A'}) - ${korban.kondisi || 'N/A'}`
).join('; ');
} else {
korbanInfo = `${report.namaKorban || 'N/A'} (${report.usiaKorban || 'N/A'} th)`;
}
let fotoInfo = '';
if (report.fotoKegiatan && report.fotoKegiatan.length > 0) {
fotoInfo = report.fotoKegiatan.map(foto => foto.name).join(', ');
}
return [
report.id,
new Date(report.tanggal).toLocaleDateString('id-ID'),
report.jenisKejadian,
report.waktuKejadian,
new Date(report.waktuUpdate).toLocaleString('id-ID'),
report.lokasi,
report.jumlahKorban,
korbanInfo,
report.kronologi,
report.peralatan || '',
report.kendaraan || '',
report.petugasPMI,
report.pengeluaranBBM,
report.pemasukan,
report.pelayananRS || 'Tidak Ada',
report.namaRS || '',
fotoInfo
];
});
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
// Auto-resize columns
sheet.autoResizeColumns(1, headers.length);
return ContentService
.createTextOutput(JSON.stringify({
success: true,
message: `${reports.length} data berhasil disinkronkan`,
timestamp: new Date().toISOString()
}))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService
.createTextOutput(JSON.stringify({
success: false,
error: error.toString()
}))
.setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
return ContentService
.createTextOutput(JSON.stringify({
success: true,
message: 'PMI Reporting System - Google Apps Script is running',
timestamp: new Date().toISOString()
}))
.setMimeType(ContentService.MimeType.JSON);
}
📋 Langkah Setup:
- Buka script.google.com
- Klik “New Project” dan paste kode di atas
- Klik “Deploy” → “New deployment”
- Pilih type “Web app”, Execute as “Me”, Access “Anyone”
- Copy URL yang dihasilkan ke form konfigurasi