Tampung seluruh doa restu dari para tamu. Anda memiliki kendali penuh untuk mengubah (edit teks/nama), menghapus, memberi balasan pengantin, atau menyembunyikan komentar yang tidak diinginkan.
Database Mode: Terhubung ke Google Spreadsheet✓ Siap Digunakan
Google Spreadsheet Anda sudah tersambung otomatis. Seluruh ucapan doa tamu dapat Anda pantau, ubah kalimatnya, atau hapus langsung dari panel ini.
Total Ucapan
0
Doa restu tersimpan
Tamu Hadir
0
Menyatakan hadir
Tidak Hadir
0
Berhalangan hadir
Masih Ragu
0
Belum pasti hadir
Moderasi / Sembunyi
0
Tidak tampil di web
Nama Tamu
Kehadiran
Isi Ucapan & Doa
Asal Undangan
Waktu
Status
Aksi Kontrol
Belum Ada Ucapan Ditemukan
Belum ada ucapan doa yang masuk atau tidak ada ucapan yang cocok dengan filter pencarian Anda.
Pengaturan Lanjutan & Reset Database
Jika Anda ingin mengosongkan seluruh data ucapan untuk memulai pesta pernikahan baru dari awal.
Ubah Ucapan & Doa Tamu
Edit nama, status, atau perbaiki teks ucapan tamu
Tambah Ucapan & Doa Manual
Masukkan ucapan yang dikirim tamu via WhatsApp atau titip pesan
Integrasi Cloud Database (Google Sheets)
Sinkronkan ucapan tamu secara realtime dari seluruh perangkat HP
Kabar gembira: Anda sekarang bisa langsung menempelkan link Google Spreadsheet biasa Anda (https://docs.google.com/spreadsheets/d/...) tanpa perlu pusing setelan Apps Script!
📖 Cara Membuat Google Apps Script Gratis (Hanya 2 Menit)
1. Buat Spreadsheet: Buka sheets.new dan beri nama misalnya "Database Ucapan Bestari".
3. Salin Kode Script Berikut: Hapus kode bawaan dan tempelkan:
function doPost(e) {
var lock = LockService.getScriptLock();
lock.tryLock(10000);
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = {};
if (e.postData && e.postData.contents) {
try { data = JSON.parse(e.postData.contents); } catch(err) { data = e.parameter; }
} else { data = e.parameter; }
if (sheet.getLastRow() === 0) {
sheet.appendRow(["ID", "Waktu", "Nama Tamu", "Kehadiran", "Jumlah", "Template", "Ucapan & Doa", "Status", "Balasan"]);
sheet.getRange(1, 1, 1, 9).setFontWeight("bold").setBackground("#EFEFEF");
}
var id = data.id || "wish_" + new Date().getTime();
var waktu = Utilities.formatDate(new Date(), "Asia/Jakarta", "dd/MM/yyyy HH:mm:ss");
sheet.appendRow([id, waktu, data.nama || "-", data.kehadiran || "Hadir", data.jumlah || "1", data.template || "Tema Modern", data.ucapan || "-", data.status || "ditampilkan", data.balasan || ""]);
return ContentService.createTextOutput(JSON.stringify({ status: "success", id: id })).setMimeType(ContentService.MimeType.JSON);
} catch(err) {
return ContentService.createTextOutput(JSON.stringify({ status: "error", error: err.toString() })).setMimeType(ContentService.MimeType.JSON);
} finally { lock.releaseLock(); }
}
function doGet(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rows = sheet.getDataRange().getValues();
if (rows.length <= 1) return ContentService.createTextOutput(JSON.stringify([])).setMimeType(ContentService.MimeType.JSON);
var result = [];
for (var i = 1; i < rows.length; i++) {
result.push({
id: rows[i][0],
waktu: rows[i][1],
nama: rows[i][2],
kehadiran: rows[i][3],
jumlah: rows[i][4],
template: rows[i][5],
ucapan: rows[i][6],
status: rows[i][7] || "ditampilkan",
balasan: rows[i][8] || ""
});
}
return ContentService.createTextOutput(JSON.stringify(result.reverse())).setMimeType(ContentService.MimeType.JSON);
}
4. Terapkan (Deploy): Klik Deploy (Terapkan) → New deployment (Penerapan Baru) → Pilih jenis Web app (Aplikasi Web) → Atur Who has access: Anyone (Siapa Saja) → Klik Deploy dan salin URL Web App ke kotak di atas.