e>
PT Estera Prima Corp · Bestlaptop & Bestservice

Pusat Kontrol Penjualan

Integrasi Data — Google Sheet Sembunyikan ▾
Tempel data dari Sheet disarankan

Di Google Sheet: blok seluruh tabel (Ctrl/Cmd + A) → Copy → tempel di bawah → Proses. Ikut memperbarui angka aktual & Target Bulanan/rasio bila kolom itu ikut tersalin. Privat & pasti jalan.

Auto-sync dari link Sheet
Syarat & Cara Setup (Auto-Sync Instan)
  1. Metode 1: Gunakan URL Web App (Direkomendasikan - Tanpa Jeda/Bypass Cache):
    Langkah Google Apps Script Web App

    Di Google Sheet Anda: Buka Ekstensi -> Apps Script. Hapus semua kode, paste kode di bawah ini:

    function doGet(e) {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dashboard Capaian vs target") || SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
      var data = sheet.getDataRange().getValues();
      var csvContent = "";
      for (var i = 0; i < data.length; i++) {
        var row = data[i];
        for (var j = 0; j < row.length; j++) {
          var valStr = String(row[j]);
          if (valStr.indexOf(",") !== -1 || valStr.indexOf("\"") !== -1 || valStr.indexOf("\n") !== -1) {
            valStr = '"' + valStr.replace(/"/g, '""') + '"';
          }
          csvContent += valStr + (j < row.length - 1 ? "," : "");
        }
        csvContent += "\n";
      }
      return ContentService.createTextOutput(csvContent).setMimeType(ContentService.MimeType.TEXT);
    }
    function kirimNotifikasiSync() {
      var sheetId = SpreadsheetApp.getActiveSpreadsheet().getId();
      UrlFetchApp.fetch("https://ntfy.sh/arsslabs_kpi_marketing_sync_" + sheetId, {"method": "post", "payload": "sync"});
      try {
        var webAppUrl = ScriptApp.getService().getUrl();
        var match = webAppUrl.match(/\/macros\/s\/([a-zA-Z0-9-_]+)/);
        if (match) UrlFetchApp.fetch("https://ntfy.sh/arsslabs_kpi_marketing_sync_" + match[1], {"method": "post", "payload": "sync"});
      } catch(err){}
    }
    function buatTriggerOnEdit() {
      var triggers = ScriptApp.getProjectTriggers();
      for (var i = 0; i < triggers.length; i++) ScriptApp.deleteTrigger(triggers[i]);
      ScriptApp.newTrigger('kirimNotifikasiSync').forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()).onEdit().create();
    }

    1. Klik **Simpan**.
    2. Klik **Deploy -> New deployment** (Pilih tipe **Web App**, set "Who has access" ke **Anyone**, klik Deploy dan salin URL Web App-nya).
    3. Tempelkan URL Web App tersebut di kolom URL input di atas.
    4. Pilih fungsi buatTriggerOnEdit di menu atas editor Apps Script, lalu klik **Run** (Izinkan akses Google). Selesai!

  2. Metode 2: Gunakan URL Google Sheet Biasa (Mengalami Delay Cache Google 2-5 Menit):

    Jadikan sheet publik (File -> Bagikan -> Publikasikan ke web / Pelihat). Dan buat trigger buatTriggerOnEdit menggunakan script di atas.

Kelola Target — Bulanan & Rasio Sembunyikan ▾

Ubah target bulanan tiap cabang di sini bila ada penambahan/pengurangan target. Target Mingguan, Harian, Ideal, Gap%, dan Dikejar/hari akan otomatis menyesuaikan di seluruh dashboard.

CabangOmset/blnAOVClosing/blnVisitor/blnLead/blnFU/bln Lead→FULead→VisitVisit→Close
Ringkasan Gabungan — 7 Cabang
Status Cabang (pace omset vs ideal hari ini)

Klik cabang untuk buka detail & input angka harian. Hijau (ON TRACK) di atas pace ideal · Kuning (MENDEKATI) mendekati · Merah (TERTINGGAL) tertinggal.

Detail & Input Cabang
Riwayat Omset Harian (dari yang disimpan)
Dashboard internal · angka tersimpan otomatis di sesi ini · gunakan Export untuk backup berkala.