Salesforce Automation Email parsing Google Sheets — Tutorial langkah demi langkah
- Otomasi alur: Gmail → parse email → Google Sheets (staging) → dedupe → Salesforce.
- Pilih jalur cepat (Parseur/email2sheet) untuk POC, atau Apps Script + Salesforce REST API untuk fleksibilitas penuh.
- Gunakan order_id sebagai primary key dan simpan kolom Status/Error untuk audit dan retry.
- Test regex & end‑to‑end sebelum production; gunakan LockService untuk mencegah race condition.
Pembuka
salesforce automation email parsing google sheets hadir untuk mengatasi pekerjaan manual yang menguras waktu: menerima order/leads lewat email lalu memindahkan data ke spreadsheet dan CRM. Artikel ini menunjukkan alur praktis (Gmail → parse email → Google Sheets → dedupe → push ke Salesforce) yang bisa Anda reproduksi dalam ~90 menit (target, tanpa sumber tepercaya). Panduan berfokus pada implementasi teknis, contoh regex, snippet Google Apps Script, dan opsi integrasi—baik no-code maupun low-code.
Ringkasan solusi & arsitektur
Arsitektur singkat:
- Gmail → Email parser (add‑on atau Apps Script regex) → Google Sheets (staging) → dedupe + append row → Salesforce
Fastest path: pakai add‑on (Parseur / email2sheet). Most flexible: Apps Script + Salesforce REST API.
Contoh skenario nyata (parse email)
Skenario: toko e‑commerce menerima order via email. Tujuan sistem:
- baca email order
- extract field (order_id, nama, email, produk, qty, total)
- simpan ke Google Sheets (append row)
- hindari duplikasi (dedupe)
- buat Lead/Order di Salesforce
Contoh email mentah:
From: orders@shop-example.com
Subject: New Order Confirmation #ORD-20260523-7781
Order ID: ORD-20260523-7781
Customer Name: Budi Santoso
Customer Email: budi.santoso@example.com
Product: Wireless Keyboard
Qty: 2
Price: Rp 350.000
Total: Rp 700.000
Prasyarat
- Akun Gmail & Google Sheets
- Akses Google Apps Script
- Salesforce sandbox + user dengan API access / permission untuk Flow (OAuth docs: Salesforce OAuth)
- Optional: Parseur atau email2sheet untuk jalur no‑code
- Jika mempertimbangkan alur serupa dengan Mailchimp, lihat panduan Mailchimp automation
Langkah 1 — Menangkap email dan parse ke Google Sheets
Opsi A — Pakai add‑on (Parseur / email2sheet)
- Install add‑on dari Google Workspace Marketplace (email2sheet) atau buat mailbox parser di Parseur.
- Forward email order ke alamat parser, map fields, lalu output ke Google Sheets.
Referensi: Parseur docs
Opsi B — Google Apps Script custom parsing (lebih fleksibel)
Recommended sheet: sheet “Orders” dengan kolom: Timestamp, MessageId, OrderId, CustomerName, CustomerEmail, Product, Qty, Price, Total, Status, SalesforceId, Error
Contoh regex:
- Order ID:
/Order ID:\s*(ORD-\d{8}-\d+)/i - Email:
/Customer Email:\s*([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,})/i - Qty:
/Qty:\s*(\d+)/i - Price:
/Price:\s*Rp\s*([\d.]+)/i
Contoh Apps Script (ringkas, tested structure):
function extract(text, regex) {
const m = text.match(regex);
return m ? m[1].trim() : '';
}
function normalizeNumber(str) {
if (!str) return '';
return str.replace(/\./g,'').replace(/,/g,'.');
}
function parseOrdersFromGmail() {
const sheet = SpreadsheetApp.getActive().getSheetByName('Orders');
const threads = GmailApp.search('subject:"New Order Confirmation" newer_than:7d');
threads.forEach(thread => {
thread.getMessages().forEach(msg => {
const body = msg.getPlainBody();
const messageId = msg.getId();
const orderId = extract(body, /Order ID:\s*(ORD-\d{8}-\d+)/i);
if (!orderId) return;
// dedupe handled separately
const row = [
new Date(), messageId, orderId,
extract(body, /Customer Name:\s*(.+)/i),
extract(body, /Customer Email:\s*([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,})/i),
extract(body, /Product:\s*(.+)/i),
Number(extract(body, /Qty:\s*(\d+)/i) || 0),
Number(normalizeNumber(extract(body, /Price:\s*Rp\s*([\d.]+)/i)) || 0),
Number(normalizeNumber(extract(body, /Total:\s*Rp\s*([\d.]+)/i)) || 0),
'Pending', '', ''
];
sheet.appendRow(row);
});
});
}
Referensi: GmailApp ; appendRow
Langkah 2 — Dedupe & business rules sebelum append row
Dedupe penting untuk mencegah Lead/Order ganda di Salesforce. Strategi umum:
- Primary key: order_id (direkomendasikan)
- Alternatif: email + messageId atau kombinasi subject+date
Contoh isDuplicate di Apps Script + LockService untuk race condition:
function isDuplicate(sheet, key, colIndex) {
const lock = LockService.getScriptLock();
lock.waitLock(30000);
try {
const lastRow = sheet.getLastRow();
if (lastRow < 2) return false;
const values = sheet.getRange(2, colIndex, lastRow-1, 1).getValues().flat();
return values.includes(key);
} finally {
lock.releaseLock();
}
}
(LockService: LockService)
Langkah 3 — Otomatisasi pengiriman data ke Salesforce
Opsi A — No‑code: Zapier / Make (cepatan implementasi)
Integrasi cepat: Zapier Google Sheets → Salesforce. Untuk contoh pattern Zapier (OCR/invoice-focused) lihat: Zapier OCR invoice. Panduan Make untuk alur parsing → Sheets → Salesforce: Make guide.
Opsi B — Low‑code: Apps Script + Salesforce REST API
- Buat Connected App di Salesforce (OAuth): Salesforce OAuth docs
- Endpoint create Lead: POST {instance}/services/data/v60.0/sobjects/Lead/ (docs: create sObject)
Contoh payload JSON:
{
"LastName":"Santoso",
"Company":"Shop Example",
"Email":"budi.santoso@example.com",
"LeadSource":"Email Order Parsing",
"Description":"Order ID: ORD-xxxx | Product: ..."
}
Untuk alur enrichment setelah lead dibuat, lihat: Salesforce lead enrichment
Opsi C — Native Salesforce Flow / workflow
Kirim data ke Salesforce (API / webhook), lalu gunakan Record‑Triggered atau Autolaunched Flow untuk validasi & create records (Flow basics: Flow builder overview).
Jika membangun eskalasi/ticketing berbasis Salesforce setelah lead/order masuk, referensi implementasi eskalasi: ticketing escalation.
Testing & deployment
- Unit test regex dengan variasi email (minimal 5 varian)
- End‑to‑end test: kirim sample email → pastikan row muncul → dedupe berjalan → SalesforceId terisi
- Trigger scheduling: Apps Script time‑driven triggers (triggers guide)
- Logging: kolom Status/Error dan tab Logs untuk audit
Contoh penggunaan scheduling/cron-like workflows dengan Apps Script: Daily Report Bot.
Troubleshooting umum
- Parsing gagal: regex terlalu ketat → buat fallback templates
- Dedupe FP/FN: perbaiki key atau gunakan fuzzy match (tanpa sumber tepercaya)
- Salesforce auth errors: cek scopes & Connected App settings (OAuth docs)
- Rate limits & batching: lihat Salesforce API limits (requests limits) dan gunakan batching/retry dengan exponential backoff (retry & backoff).
Variasi & advanced enhancements
- Attachment/PDF parsing: gunakan OCR (Google Vision OCR: Vision OCR).
- Scale: pindahkan parsing ke Cloud Functions / Cloud Run (Cloud Run) jika volume besar.
- Keamanan: jangan simpan secrets di kode; gunakan Script Properties atau Secret Manager.
Code & resources appendix (penting)
- Apps Script docs
- GmailApp ref
- SpreadsheetApp ref
- Parseur
- email2sheet marketplace
- Salesforce REST API
Kesimpulan & CTA
Flow yang direkomendasikan: Gmail → parse email → Google Sheets (staging) → dedupe → append row → Salesforce. Praktik terbaik: gunakan order_id sebagai primary key, validasi input, dan simpan status/error untuk audit. Jika Anda butuh implementasi end‑to‑end, audit keamanan, atau demo integrasi Salesforce + otomasi: hubungi tim InReality Solutions untuk konsultasi dan demo (/contact).
Untuk contoh lain menghubungkan Google Sheets ke CRM (bukan hanya Salesforce), lihat: Google Sheets automation form to CRM.
FAQ
Q: Bisakah pakai non‑Gmail?
A: Ya—pakai IMAP/forwarding atau connector (IMAP guide: Google Mail IMAP guide).
Q: Bagaimana menangani multilingual emails?
A: Buat template per bahasa dan gunakan regex yang fleksibel atau fallback parsing; pertimbangkan NLP / language detection untuk routing ke template yang tepat.
Q: Estimasi biaya?
A: Bergantung kompleksitas alur kerja (add‑on, licence API, volume, dan developer time). Untuk estimasi terperinci, minta konsultasi.
Q: Bagaimana menyimpan secrets secara aman?
A: Jangan hardcode secrets di skrip. Gunakan Script Properties atau layanan seperti Google Secret Manager, dan batasi akses pada Connected App di Salesforce.
Q: Apa batasan rate pada Salesforce dan bagaimana mengatasinya?
A: Salesforce punya API limits; rancang batching, retry dengan exponential backoff, dan monitoring. Lihat Salesforce API limits untuk detail.



