Dokumentasi

Panduan Lengkap DataInsight

Pelajari cara menggunakan layanan scraping kami untuk mendapatkan data bisnis dari Maps

Quick Start

3 langkah mudah untuk mulai scraping

1

Setup Spreadsheet

Buat Spreadsheet baru dan deploy Apps Script untuk menerima data

2

Buat Order

Isi form order dengan email, keywords, dan URL Apps Script

3

Tunggu & Terima Data

Setelah pembayaran, scraping akan diproses dan data masuk ke sheet Anda

Tutorial Setup Spreadsheet

Ikuti langkah-langkah berikut untuk setup Spreadsheet sebagai penerima data

1

Buat Spreadsheet Baru

Buka Drive → Klik "New" → Spreadsheet → Blank spreadsheet

  • Beri nama sheet sesuai keinginan (contoh: "DataInsight Scraping Results")
  • Sheet ini akan menjadi tempat data scraping masuk
2

Buka Apps Script Editor

Di Spreadsheet, klik menu Extensions → Apps Script

  • Akan membuka tab baru dengan editor kode
  • Hapus kode default yang ada (function myFunction() {...})
3

Paste Kode Apps Script

Copy kode di bawah ini dan paste ke editor Apps Script

Kode Apps Script

/**
 * Google Apps Script for Google Maps Scraper Integration
 * Version: 1.0.0
 * Last Updated: 2025-01-23
 */

function doPost(e) {
  try {
    Logger.log('Received POST request');
    const data = JSON.parse(e.postData.contents);

    if (!data.orderId || !data.keyword || !data.results) {
      throw new Error('Missing required fields: orderId, keyword, or results');
    }

    const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    const sheetName = `Order_${data.orderId.substring(0, 8)}`;
    let sheet = spreadsheet.getSheetByName(sheetName);

    if (!sheet) {
      sheet = spreadsheet.insertSheet(sheetName);
      const headers = [
        'No', 'Nama Bisnis', 'Rating', 'Total Review', 'Kategori',
        'Alamat', 'Telepon', 'Website', 'Jam Buka', 'Latitude',
        'Longitude', 'Google Maps URL', 'Place ID', 'Keyword', 'Timestamp'
      ];

      sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
      sheet.getRange(1, 1, 1, headers.length)
        .setBackground('#667eea')
        .setFontColor('#ffffff')
        .setFontWeight('bold')
        .setHorizontalAlignment('center');
      sheet.setFrozenRows(1);
    }

    const rows = [];
    const startRow = sheet.getLastRow() + 1;
    const timestamp = new Date().toLocaleString('id-ID');

    data.results.forEach((result, index) => {
      rows.push([
        startRow + index - 1,
        result.name || '',
        result.rating || '',
        result.reviewCount || '',
        result.category || '',
        result.address || '',
        result.phone || '',
        result.website || '',
        result.hours || '',
        result.lat || '',
        result.lng || '',
        result.url || '',
        result.placeId || '',
        data.keyword || '',
        timestamp
      ]);
    });

    if (rows.length > 0) {
      const range = sheet.getRange(startRow, 1, rows.length, rows[0].length);
      range.setValues(rows);
      range.setVerticalAlignment('middle');

      for (let i = 0; i < rows.length; i++) {
        if (i % 2 === 0) {
          sheet.getRange(startRow + i, 1, 1, rows[0].length).setBackground('#f7fafc');
        }
      }

      for (let i = 1; i <= rows[0].length; i++) {
        sheet.autoResizeColumn(i);
      }
    }

    createOrUpdateSummary(spreadsheet, data);

    return ContentService.createTextOutput(
      JSON.stringify({
        success: true,
        message: 'Data successfully saved',
        rowsAdded: rows.length
      })
    ).setMimeType(ContentService.MimeType.JSON);

  } catch (error) {
    Logger.log('Error: ' + error.message);
    return ContentService.createTextOutput(
      JSON.stringify({
        success: false,
        error: error.message
      })
    ).setMimeType(ContentService.MimeType.JSON);
  }
}

function createOrUpdateSummary(spreadsheet, data) {
  let summarySheet = spreadsheet.getSheetByName('Summary');

  if (!summarySheet) {
    summarySheet = spreadsheet.insertSheet('Summary', 0);
    const headers = ['Order ID', 'Keyword', 'Total Results', 'Last Updated'];
    summarySheet.getRange(1, 1, 1, headers.length).setValues([headers]);
    summarySheet.getRange(1, 1, 1, headers.length)
      .setBackground('#4c51bf')
      .setFontColor('#ffffff')
      .setFontWeight('bold')
      .setHorizontalAlignment('center');
    summarySheet.setFrozenRows(1);
  }

  const lastRow = summarySheet.getLastRow();
  const existingData = lastRow > 1 ? summarySheet.getRange(2, 1, lastRow - 1, 4).getValues() : [];

  let found = false;
  for (let i = 0; i < existingData.length; i++) {
    if (existingData[i][0] === data.orderId && existingData[i][1] === data.keyword) {
      existingData[i][2] = (parseInt(existingData[i][2]) || 0) + data.results.length;
      existingData[i][3] = new Date().toLocaleString('id-ID');
      summarySheet.getRange(i + 2, 1, 1, 4).setValues([existingData[i]]);
      found = true;
      break;
    }
  }

  if (!found) {
    const newRow = [
      data.orderId,
      data.keyword,
      data.results.length,
      new Date().toLocaleString('id-ID')
    ];
    summarySheet.appendRow(newRow);
  }

  for (let i = 1; i <= 4; i++) {
    summarySheet.autoResizeColumn(i);
  }
}

function doGet(e) {
  return ContentService.createTextOutput(
    JSON.stringify({
      status: 'active',
      message: 'GMaps Scraper webhook is ready',
      version: '1.0.0'
    })
  ).setMimeType(ContentService.MimeType.JSON);
}
4

Save Project

Klik ikon disk atau tekan Ctrl+S untuk save

  • Beri nama project (contoh: "DataInsight Scraper Webhook")
5

Deploy as Web App

Klik "Deploy" → "New deployment"

  • Select type: Pilih "Web app"
  • Description: (opsional) "Webhook for DataInsight Scraper"
  • Execute as: Pilih "Me"
  • Who has access: Pilih "Anyone"
  • Klik "Deploy"
6

Copy Web App URL

Setelah deploy, akan muncul URL web app

  • Format URL: https://script.google.com/macros/s/.../exec
  • Klik "Copy" untuk copy URL
  • Paste URL ini di form order DataInsight
7

Authorize Script

Saat pertama kali deploy, Google akan minta izin

  • Klik "Authorize access"
  • Pilih akun Google Anda
  • Klik "Advanced" → "Go to [Project Name] (unsafe)"
  • Klik "Allow"
  • Ini normal karena script akan menulis ke spreadsheet Anda

Frequently Asked Questions

Berapa lama proses scraping?

Tergantung antrian dan jumlah data. Biasanya 5-30 menit. Anda akan menerima email notifikasi saat selesai.

Apakah data dibatasi?

TIDAK. Anda mendapatkan UNLIMITED hasil per keyword. Sistem akan scraping semua data yang tersedia di Google Maps untuk keyword tersebut.

Data apa saja yang didapatkan?

Nama bisnis, alamat lengkap, nomor telepon, website, rating, jumlah review, kategori, koordinat (lat/lng), dan informasi lainnya yang tersedia.

Apakah data disimpan di server?

TIDAK. Data langsung dikirim ke Spreadsheet Anda dan tidak disimpan di server kami. Privacy Anda terjamin.

Bagaimana jika scraping gagal?

Anda akan mendapat full refund jika scraping gagal karena error sistem kami. Jika gagal karena kesalahan input (URL salah, dll), tidak ada refund.

Berapa maksimal keyword per order?

Maksimal 20 keywords per order. Jika butuh lebih, buat order baru.

Format keyword seperti apa?

Format bebas, tapi sebaiknya spesifik. Contoh: "Barbershop di Jakarta Selatan", "Restaurant seafood di Surabaya", "Hotel murah di Bali".

Apakah bisa scraping negara lain?

Ya, bisa. Google Maps worldwide. Contoh keyword: "Coffee shop in Tokyo", "Restaurant in Singapore".

Bagaimana cara mendapat notifikasi?

Semua notifikasi dikirim via email: saat order dibuat, pembayaran berhasil, scraping dimulai, dan scraping selesai.

Apakah Apps Script URL aman dibagikan?

URL Apps Script hanya untuk menerima data ke spreadsheet Anda. Namun sebaiknya jangan share ke orang lain untuk keamanan data Anda.

Harga & Pembayaran

Rp 25.000 per keyword

  • Unlimited hasil per keyword
  • Data lengkap (nama, alamat, telepon, website, rating, dll)
  • Langsung ke Spreadsheet Anda
  • Email notifikasi setiap tahap
  • Support via email

Metode Pembayaran: Virtual Account, E-Wallet (GoPay, OVO, Dana, ShopeePay), QRIS, Credit Card

Butuh Bantuan?

Jika ada pertanyaan atau kendala, hubungi kami

Kami akan respon dalam 24 jam

Siap Mulai Scraping?

Dapatkan data bisnis dari Maps sekarang

Buat Order Sekarang