Trigger#
Trigger menjalankan fungsi tanpa klik manual. Dua jenis: berbasis waktu dan berbasis kejadian.
Time-Driven (Berbasis Waktu)#
Jalankan fungsi tiap interval tertentu.
Example:
function pasangJadwal() { ScriptApp.newTrigger('kirimLaporan') .timeBased() .everyDays(1) .atHour(7) .create();}| Method | Deskripsi |
|---|---|
everyDays(n) | Tiap n hari |
everyHours(n) | Tiap n jam |
everyMinutes(n) | Tiap n menit |
atHour(h) | Jam tertentu (0–23) |
onWeekDay(ScriptApp.WeekDay.MONDAY) | Hari tertentu |
Event-Based (Berbasis Kejadian)#
Jalankan fungsi saat data berubah atau form dikirim.
Example:
function pasangOnEdit() { ScriptApp.newTrigger('saatEdit') .forSpreadsheet(SpreadsheetApp.getActive()) .onEdit() .create();}
function saatEdit(e) { const sheet = e.range.getSheet(); const baris = e.range.getRow(); const nilaiBaru = e.value; sheet.getRange(baris, 6).setValue('Diubah: ' + new Date());}Example (form submit):
function pasangOnSubmit() { ScriptApp.newTrigger('saatSubmit') .forSpreadsheet(SpreadsheetApp.getActive()) .onFormSubmit() .create();}Membaca Event Object#
| Properti | Isi |
|---|---|
e.range | Cell yang berubah |
e.value | Nilai baru |
e.source | Spreadsheet aktif |
e.values | Semua jawaban (onFormSubmit) |
Membersihkan Trigger#
Example:
function hapusSemuaTrigger() { ScriptApp.getProjectTriggers().forEach((t) => ScriptApp.deleteTrigger(t));}Warning
Banyak trigger yang sama menumpuk jika
pasang*dijalankan berulang. CekgetProjectTriggers()dulu atau jalankan sekali.
Next#
Pelajari Web App & UI Custom.