se-hari.com se-hari.com

Meeting Zoom otomatis dari Google Calendar

Setiap event kalender baru menjadi meeting Zoom berlisensi, lengkap dengan rekaman dan notulen otomatis. Anda tetap menjadwalkan seperti biasa; Zoom-nya…

3 menit baca Diperbarui 15 Agustus 2026 Lihat sebagai Markdown

Setiap event kalender baru menjadi meeting Zoom berlisensi, lengkap dengan rekaman dan notulen otomatis. Anda tetap menjadwalkan seperti biasa; Zoom-nya menyusul sendiri.

#Kapan resep ini masuk akal

Resep ini cocok kalau tim Anda sudah menjadwalkan lewat kalender dan Zoom-nya selalu menyusul belakangan. Ia menghilangkan langkah manual yang paling sering terlupa sampai lima menit sebelum rapat dimulai. Yang perlu diperhatikan: ini satu-satunya resep yang memotong kredit secara langsung, jadi filternya harus ketat.

#Yang dihasilkan

Satu meeting Zoom per event kalender, beserta tautan join yang bisa dibagikan.

#Yang Anda butuhkan

  • n8n self-hosted dengan community node n8n-nodes-sehari terpasang
  • meetings:write
  • credits:read
  • Kredensial Google Calendar di n8n

Kalau belum memasang node-nya, ikuti panduan n8n lebih dulu — pemasangannya satu langkah dari menu Settings.

#Alur workflow

  1. Event Kalender Baru (googleCalendarTrigger)
  2. Cek Biaya (Se-Hari: seHari)
  3. Buat Meeting Zoom (Se-Hari: seHari)
  4. Kirim Link ke Peserta (noOp)

#Cara memakainya

  1. Salin JSON di bawah
  2. Di n8n: Workflows → Import from Clipboard, lalu tempel
  3. Pilih kredensial Se-Hari API pada setiap node Se-Hari
  4. Sesuaikan node tujuan (lihat catatan di bawah)
  5. Aktifkan workflow

Kalau workflow ini memakai node trigger, endpoint webhook-nya didaftarkan otomatis saat diaktifkan dan dihapus saat dinonaktifkan. Tidak ada URL yang perlu disalin manual.

#Yang perlu disesuaikan

Resep ini langsung memotong kredit setiap kali berjalan. Node Cek Biaya ada supaya Anda bisa menambahkan percabangan saat saldo menipis — dan sangat disarankan menambahkan filter agar tidak setiap event kalender ikut terpicu. Event pribadi, blok fokus, dan pengingat ulang tahun tidak butuh meeting Zoom.

#Sebelum dijalankan di produksi

Impor dulu ke workflow terpisah dan jalankan sekali secara manual. n8n menyimpan hasil setiap node pada eksekusi terakhir, jadi Anda bisa melihat bentuk data yang sebenarnya keluar dari node Se-Hari sebelum menulis ekspresi apa pun di node berikutnya. Menebak bentuk data lalu memperbaikinya lewat percobaan berulang jauh lebih lambat, dan pada resep yang memakai kredit, percobaan berulang itu ada harganya.

Perhatikan juga penagihan kredit resep ini. Operasi yang membuat meeting memotong kredit saat itu juga, sedangkan operasi notulen menagih setelah pemrosesan selesai sesuai durasi asli rekaman. Kalau workflow Anda membaca saldo tepat setelah mengantre notulen, angkanya belum berubah — itu bukan bug. Pasang batas kredit harian pada API key yang dipakai workflow ini supaya kesalahan sekali tidak berubah menjadi tagihan besar.

#Kalau tidak berjalan seperti seharusnya

Waktu memakai zona WIB (UTC+7). Google Calendar mengembalikan waktu dengan offset, jadi memotong 11 karakter pertamanya menghasilkan jam UTC, bukan WIB — dan meeting Anda akan terjadwal tujuh jam melenceng. Pastikan kalender Anda diset ke Asia/Jakarta, atau konversi eksplisit.

Untuk masalah yang lebih umum, tab Webhooks di dashboard developer memuat riwayat pengiriman lengkap dengan kode respons dari instance n8n Anda — tempat pertama yang harus dilihat ketika trigger tidak pernah berjalan.

#Variasi yang sering diminta

  • Tambahkan filter agar hanya event dengan penanda tertentu di judul yang memicu pembuatan meeting.
  • Perbarui event kalender dengan tautan join lewat node Google Calendar Update, sehingga peserta melihatnya di undangan yang sama.
  • Pilih paket harga berdasarkan jumlah peserta yang diundang, bukan selalu paket yang sama.

#Workflow JSON

json
{
  "name": "Meeting Zoom dari Google Calendar",
  "nodes": [
    {
      "parameters": {
        "content": "## Meeting Zoom dari Google Calendar\n\nSetiap event kalender baru jadi meeting Zoom berlisensi, lengkap dengan notulen otomatis.\n\n**Perhatian:** operasi ini LANGSUNG memotong kredit. Node \"Cek Biaya\" ada supaya Anda bisa menambahkan filter kalau saldo menipis.\n\nWaktu memakai zona WIB (UTC+7) — jangan konversi ke UTC.",
        "width": 460,
        "height": 260
      },
      "id": "note-1",
      "name": "Catatan",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -40,
        -40
      ]
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "eventStarted"
      },
      "id": "gcal-1",
      "name": "Event Kalender Baru",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "typeVersion": 1,
      "position": [
        0,
        300
      ]
    },
    {
      "parameters": {
        "resource": "kredit",
        "operation": "estimate",
        "estimateType": "meeting",
        "pricingTierId": "",
        "withRecording": true
      },
      "id": "sh-CekBiaya",
      "name": "Cek Biaya",
      "type": "n8n-nodes-sehari.seHari",
      "typeVersion": 1,
      "position": [
        220,
        300
      ],
      "credentials": {
        "seHariApi": {
          "id": "__SEHARI_CRED__",
          "name": "Se-Hari API"
        }
      }
    },
    {
      "parameters": {
        "resource": "meeting",
        "operation": "create",
        "title": "={{ $(\"Event Kalender Baru\").item.json.summary }}",
        "date": "={{ $(\"Event Kalender Baru\").item.json.start.dateTime.slice(0,10) }}",
        "startTime": "={{ $(\"Event Kalender Baru\").item.json.start.dateTime.slice(11,16) }}",
        "pricingTierId": "",
        "meetingOptions": {
          "with_recording": true,
          "auto_notulen": true
        }
      },
      "id": "sh-BuatMeetingZoom",
      "name": "Buat Meeting Zoom",
      "type": "n8n-nodes-sehari.seHari",
      "typeVersion": 1,
      "position": [
        440,
        300
      ],
      "credentials": {
        "seHariApi": {
          "id": "__SEHARI_CRED__",
          "name": "Se-Hari API"
        }
      }
    },
    {
      "parameters": {},
      "id": "dst-KirimLinkkePeserta",
      "name": "Kirim Link ke Peserta",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        660,
        300
      ],
      "notes": "Ganti dengan node email/Slack. Link Zoom: {{ $json.join_url }}",
      "notesInFlow": true
    }
  ],
  "connections": {
    "Event Kalender Baru": {
      "main": [
        [
          {
            "node": "Cek Biaya",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cek Biaya": {
      "main": [
        [
          {
            "node": "Buat Meeting Zoom",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Buat Meeting Zoom": {
      "main": [
        [
          {
            "node": "Kirim Link ke Peserta",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": [
    {
      "name": "Se-Hari"
    }
  ]
}

#Resep lain

Siap mencoba?

Buat API key gratis di dashboard — tidak ada biaya berlangganan, kredit terpakai hanya saat Anda benar-benar memproses rekaman atau membuat meeting.

Buat API Key