* Masukkan URL dari hasil deploy Google Apps Script Anda. Lihat tab "Panduan" untuk instruksi lengkap.
+
Input Data Masjid
📋
Daftar Masjid
0
Total
0
Sertifikat
0
Belum Surat
Filter:
🕌
Belum ada data masjid
Silakan masukkan URL Apps Script dan tambah data baru
📊 Laporan & Statistik
0
Total Masjid
0
Masjid Jami'
0
Musholla
0
Ikrar Wakaf
Status Sertifikasi Tanah Wakaf
✅ Sertifikat Wakaf NU
0%
📝 Ikrar Wakaf
0%
❌ Belum Ada Surat
0%
LAPORAN DATA MASJID
Lembaga Ta'mir Masjid NU - Tingkat Ranting
| No | Nama Masjid | Jenis | Alamat | Ketua Takmir | Status Tanah |
|---|
📖 Panduan Setup Google Apps Script
1 Buat Google Spreadsheet Baru
- Buka Google Sheets
- Buat spreadsheet baru dengan nama "Data Masjid NU"
- Buat header di baris pertama (A1:F1):
Timestamp | Nama Masjid | Jenis | Alamat | Ketua Takmir | Status Tanah
2 Buat Google Apps Script
- Di spreadsheet, klik menu Extensions → Apps Script
- Hapus semua kode default
- Copy-paste kode berikut:
// ==========================================
// KODE GOOGLE APPS SCRIPT - SiPeMas NU
// ==========================================
// PENTING: Buat script ini dari dalam Spreadsheet
// (Extensions > Apps Script) agar otomatis terhubung
// Script ini otomatis menggunakan SHEET PERTAMA
// Handle GET Request - Mengambil semua data
function doGet(e) {
try {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// Mengambil sheet pertama (apapun namanya)
const sheet = ss.getSheets()[0];
if (!sheet) {
return ContentService
.createTextOutput(JSON.stringify({
success: false,
error: 'Spreadsheet tidak memiliki sheet!'
}))
.setMimeType(ContentService.MimeType.JSON);
}
const data = sheet.getDataRange().getValues();
if (data.length <= 1) {
return ContentService
.createTextOutput(JSON.stringify({ success: true, data: [] }))
.setMimeType(ContentService.MimeType.JSON);
}
const headers = data[0];
const rows = data.slice(1);
const result = rows
.filter(row => row.some(cell => cell !== ''))
.map((row, index) => {
let obj = { id: index + 1 };
headers.forEach((header, i) => {
obj[header] = row[i] || '';
});
return obj;
});
return ContentService
.createTextOutput(JSON.stringify({ success: true, data: result }))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService
.createTextOutput(JSON.stringify({
success: false,
error: error.message
}))
.setMimeType(ContentService.MimeType.JSON);
}
}
// Handle POST Request - Menambah data baru
function doPost(e) {
try {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// Mengambil sheet pertama (apapun namanya)
const sheet = ss.getSheets()[0];
if (!sheet) {
return ContentService
.createTextOutput(JSON.stringify({
success: false,
error: 'Spreadsheet tidak memiliki sheet!'
}))
.setMimeType(ContentService.MimeType.JSON);
}
const data = JSON.parse(e.postData.contents);
const timestamp = new Date().toLocaleString('id-ID', {
timeZone: 'Asia/Jakarta'
});
const newRow = [
timestamp,
data.namaMasjid,
data.jenisMasjid,
data.alamat,
data.ketuaTakmir,
data.statusTanah
];
sheet.appendRow(newRow);
return ContentService
.createTextOutput(JSON.stringify({
success: true,
message: 'Data berhasil disimpan!'
}))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService
.createTextOutput(JSON.stringify({
success: false,
error: error.message
}))
.setMimeType(ContentService.MimeType.JSON);
}
}
// Fungsi untuk setup header otomatis
function setupHeaders() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// Mengambil sheet pertama
const sheet = ss.getSheets()[0];
const headers = [
'Timestamp',
'Nama Masjid',
'Jenis',
'Alamat',
'Ketua Takmir',
'Status Tanah'
];
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
sheet.getRange(1, 1, 1, headers.length)
.setBackground('#009900')
.setFontColor('#ffffff')
.setFontWeight('bold');
// Beri nama sheet
sheet.setName('Data Masjid');
Logger.log('Header berhasil dibuat!');
}
// Test function
function testDoGet() {
const result = doGet();
Logger.log(result.getContent());
}
3 Jalankan Setup Header (Opsional)
- Setelah paste kode, pilih fungsi setupHeaders dari dropdown
- Klik tombol ▶️ Run
- Izinkan akses jika diminta (Review Permissions → pilih akun → Allow)
- Header akan otomatis dibuat dengan format yang benar ✅
💡 Tips: Fungsi ini otomatis membuat header dengan warna hijau NU!
4 Deploy sebagai Web App
- Klik tombol Deploy → New deployment
- Klik ikon ⚙️ → pilih "Web app"
- Isi konfigurasi:
- Description: "SiPeMas NU API"
- Execute as: Me
- Who has access: Anyone
- Klik Deploy
- Klik Authorize access dan izinkan
- Copy Web app URL yang muncul
5 Gunakan Aplikasi
- Kembali ke tab "Aplikasi"
- Paste URL Web App ke kolom yang tersedia
- Klik "Simpan URL"
- Mulai input data masjid! 🎉
⚠️ Catatan Penting:
- Setiap kali mengubah kode, Anda harus deploy ulang dengan versi baru
- Pastikan header spreadsheet sesuai: Timestamp, Nama Masjid, Jenis, Alamat, Ketua Takmir, Status Tanah
- Jika error "Authorization required", klik Review Permissions dan izinkan akses