Panduan Lengkap: Membuat Sistem Arisan Online Anda di Google Sheets
Ikuti langkah-langkah di bawah ini untuk membangun sistem arisan interaktif Anda menggunakan Google Sheets, Google Forms, dan Google Apps Script.
Langkah 1: Buat Google Spreadsheet Baru
Buka browser Anda dan kunjungi Google Sheets: sheets.google.com.
Klik tombol besar
+ Kosong
untuk membuat spreadsheet baru.Ganti nama spreadsheet Anda menjadi "Sistem Arisan Online Interaktif" (atau nama lain yang Anda inginkan) dengan mengklik nama "Spreadsheet tanpa judul" di kiri atas.
Langkah 2: Buat Lembar Kerja (Tabs/Sheets)
Anda akan membutuhkan 4 lembar kerja (tab
) utama dalam spreadsheet ini. Ubah nama lembar yang sudah ada atau tambahkan yang baru dengan mengklik tanda +
di bagian bawah.
Form Responses 1
:Lembar ini akan dibuat otomatis oleh Google Forms. Jangan ubah nama atau struktur kolom di sini.
Fungsi: Akan menyimpan semua data pendaftaran peserta dari Google Form.
Daftar Kocokan
:Klik
+
untuk menambah lembar baru dan ubah namanya menjadiDaftar Kocokan
.Kolom yang dibutuhkan:
A1:
Nama Peserta
Fungsi: Ini adalah daftar peserta yang memenuhi syarat dan belum memenangkan arisan. Anda akan menyalin nama-nama dari
Form Responses 1
ke sini.
Catatan Pembayaran
:Klik
+
untuk menambah lembar baru dan ubah namanya menjadiCatatan Pembayaran
.Kolom yang dibutuhkan:
A1:
Nama Peserta
B1:
Periode 1
C1:
Periode 2
D1:
Periode 3
(Tambahkan kolomPeriode X
sesuai jumlah putaran arisan Anda, misalnya sampai Periode 10 jika ada 10 peserta).
Fungsi: Untuk melacak status pembayaran iuran setiap peserta.
Dashboard & Pemenang
:Klik
+
untuk menambah lembar baru dan ubah namanya menjadiDashboard & Pemenang
.Kolom yang dibutuhkan:
A1:
Periode
B1:
Tanggal Kocokan
C1:
Pemenang
Fungsi: Akan mencatat riwayat setiap kocokan dan siapa pemenangnya.
Langkah 3: Buat Formulir Pendaftaran (Google Forms)
Buka tab baru di browser Anda dan kunjungi Google Forms: forms.google.com.
Klik tombol besar
+ Kosong
untuk membuat formulir baru.Beri judul formulir Anda, misalnya "Formulir Pendaftaran Arisan [Nama Arisan Anda]".
Tambahkan pertanyaan berikut sebagai
Jawaban singkat
dan pastikan semuanyaWajib diisi
:Nama Lengkap
Nomor WhatsApp
Alamat Email
Setelah selesai, klik tab "Jawaban" di bagian atas formulir.
Klik ikon Google Sheets (biasanya berwarna hijau dan mirip salib).
Pilih opsi "Pilih spreadsheet yang sudah ada".
Cari dan pilih spreadsheet "Sistem Arisan Online Interaktif" yang Anda buat di Langkah 1.
Klik "Pilih". Ini akan secara otomatis membuat lembar
Form Responses 1
di spreadsheet Anda dan menghubungkan formulir dengan spreadsheet tersebut.
Langkah 4: Masukkan Kode Google Apps Script
Ini adalah bagian terpenting yang akan membuat sistem arisan Anda otomatis.
Kembali ke Google Spreadsheet Anda (
Sistem Arisan Online Interaktif
).Di menu atas, klik
Ekstensi
>Apps Script
. Ini akan membuka editor kode baru di tab browser.Di editor Apps Script, Anda akan melihat file
Code.gs
. Hapus semua kode yang sudah ada di dalamnya.Salin SELURUH kode di bawah ini dan tempelkan ke dalam file
Code.gs
.
function onOpen() {
// Fungsi ini otomatis berjalan setiap kali spreadsheet dibuka.
// Ini membuat menu kustom "⚙️ Admin Arisan" di Google Spreadsheet.
SpreadsheetApp.getUi()
.createMenu('⚙️ Admin Arisan') // Nama menu kustom
.addItem('▶️ LAKUKAN KOCOKAN & KIRIM NOTIFIKASI', 'jalankanKocokan') // Item menu yang akan memanggil fungsi jalankanKocokan
.addToUi(); // Menambahkan menu ke antarmuka pengguna Spreadsheet
}
function jalankanKocokan() {
// Fungsi utama untuk menjalankan proses kocokan arisan.
const ui = SpreadsheetApp.getUi(); // Mendapatkan objek UI untuk interaksi dengan pengguna (misalnya, menampilkan pesan alert)
// Tampilkan konfirmasi kepada pengguna sebelum melakukan kocokan.
const konfirmasi = ui.alert(
'Konfirmasi Kocokan',
'Anda yakin ingin melakukan kocokan sekarang? Proses ini tidak dapat dibatalkan.',
ui.ButtonSet.YES_NO
);
// Jika pengguna memilih 'NO', hentikan eksekusi script.
if (konfirmasi == ui.Button.NO) {
return;
}
const ss = SpreadsheetApp.getActiveSpreadsheet(); // Mendapatkan objek Spreadsheet aktif
const daftarKocokanSheet = ss.getSheetByName("Daftar Kocokan"); // Mengambil lembar "Daftar Kocokan"
const dataPesertaSheet = ss.getSheetByName("Form Responses 1"); // Mengambil lembar "Form Responses 1" (dari Google Forms)
const dashboardSheet = ss.getSheetByName("Dashboard & Pemenang"); // Mengambil lembar "Dashboard & Pemenang"
// Periksa apakah ada peserta yang tersisa untuk diundi di "Daftar Kocokan".
// Baris pertama (indeks 1) adalah header, jadi data dimulai dari baris ke-2.
const lastRowKocokan = daftarKocokanSheet.getLastRow();
if (lastRowKocokan < 2) {
ui.alert("Kocokan Selesai!", "Semua anggota sudah memenangkan arisan. Selamat!", ui.ButtonSet.OK);
return;
}
// Ambil daftar nama peserta dari kolom pertama ("Nama Peserta") di "Daftar Kocokan", mulai dari baris ke-2.
// getRange(row, column, numRows, numColumns)
const daftarNamaRange = daftarKocokanSheet.getRange(2, 1, lastRowKocokan - 1, 1);
const daftarNama = daftarNamaRange.getValues(); // Mengambil nilai-nilai dalam bentuk array 2D
// Pilih pemenang secara acak dari daftar nama.
const randomIndex = Math.floor(Math.random() * daftarNama.length);
const namaPemenang = daftarNama[randomIndex][0]; // Ambil nama pemenang (elemen pertama dari array baris yang dipilih)
// Perbarui lembar "Dashboard & Pemenang" dengan pemenang baru.
const lastRowDashboard = dashboardSheet.getLastRow();
// Menentukan periode saat ini. Jika dashboard kosong, mulai dari periode 1.
// Jika tidak, ambil nilai periode terakhir dari kolom A dan tambahkan 1.
const periode = (lastRowDashboard > 0 ? dashboardSheet.getRange("A" + lastRowDashboard).getValue() : 0) + 1;
dashboardSheet.appendRow([periode, new Date(), namaPemenang]); // Tambahkan baris baru dengan data periode, tanggal, dan nama pemenang
// Hapus pemenang dari "Daftar Kocokan" agar tidak diundi lagi di periode berikutnya.
// Buat daftar nama baru dengan memfilter nama pemenang saat ini.
const daftarNamaBaru = daftarNama.filter(nama => nama[0] !== namaPemenang);
// Perbarui rentang data di "Daftar Kocokan" dengan daftar nama yang baru.
if (daftarNamaBaru.length > 0) {
// Set nilai untuk rentang yang sesuai dengan jumlah peserta yang tersisa.
daftarKocokanSheet.getRange(2, 1, daftarNamaBaru.length, 1).setValues(daftarNamaBaru);
// Hapus sisa baris yang mungkin ada di bawah data baru jika jumlah peserta berkurang.
if (lastRowKocokan - 1 > daftarNamaBaru.length) {
daftarKocokanSheet.getRange(2 + daftarNamaBaru.length, 1, lastRowKocokan - (1 + daftarNamaBaru.length), 1).clearContent();
}
} else {
// Jika tidak ada peserta lagi setelah penghapusan, kosongkan semua konten di bawah header.
daftarKocokanSheet.getRange(2, 1, lastRowKocokan - 1, 1).clearContent();
}
// Kirim email notifikasi kepada semua peserta.
const lastRowPeserta = dataPesertaSheet.getLastRow();
// Asumsi email ada di kolom ketiga (indeks 2) dari lembar 'Form Responses 1'.
// Ambil semua email, filter yang kosong atau hanya spasi, lalu gabungkan dengan koma untuk penerima email.
const daftarEmail = dataPesertaSheet.getRange(2, 3, lastRowPeserta - 1, 1).getValues()
.map(row => row[0]) // Ekstrak nilai email dari setiap baris
.filter(email => email && email.trim() !== "") // Filter email yang kosong atau spasi saja
.join(","); // Gabungkan alamat email dengan koma untuk daftar penerima
const subjekEmail = "🎉 Pengumuman Pemenang Arisan Periode " + periode;
const isiEmail = `Halo para peserta arisan,
Kami dengan gembira mengumumkan pemenang arisan periode ${periode} adalah:
*${namaPemenang.toUpperCase()}*
Selamat kepada ${namaPemenang}! 🎉
Bagi yang belum beruntung, mari kita tunggu kocokan berikutnya! Tetap semangat dan pastikan iuran Anda selalu lunas.
Terima kasih atas partisipasi Anda.
Salam,
Admin Arisan Online
`;
if (daftarEmail) {
// Jika ada daftar email yang valid, kirim email.
MailApp.sendEmail(daftarEmail, subjekEmail, isiEmail);
}
// Tampilkan pesan sukses kepada admin.
ui.alert('Kocokan Berhasil!', 'Pemenang untuk periode ' + periode + ' adalah ' + namaPemenang + '.', ui.ButtonSet.OK);
}
0 comments:
Posting Komentar