Klik tombol di bawah untuk membuat QR Code dari data profil Anda yang tersimpan.
Arahkan ke Kartu Nama atau QR Code
AI Menganalisis Gambar...
Mohon tunggu sebentar...
Hasil Scan
Filter Berdasarkan Tag
0kontak ditemukan.
Petunjuk Pengaturan Mode Kolaborasi
Mode Kolaborasi memungkinkan Anda (sebagai Host) untuk mengumpulkan semua data pindaian dari tim Anda ke dalam satu Google Sheet. Ikuti langkah-langkah di bawah ini untuk menyiapkannya.
Langkah 1: Siapkan Google Sheet Anda
Buka Google Sheet yang sudah ada atau buat yang baru. Ini akan menjadi tempat semua data tim Anda disimpan.
Klik menu Extensions > Apps Script. Ini akan membuka editor skrip di tab baru.
Langkah 2: Salin dan Tempel Kode Skrip
Hapus semua kode contoh yang ada di editor Apps Script.
Salin seluruh kode di bawah ini dan tempelkan ke dalam editor.
// INSTRUCTIONS FOR HOST (v2):
// 1. Open your Google Sheet.
// 2. Go to Extensions > Apps Script.
// 3. Copy all the code from this file and paste it into the \`Code.gs\` file in the Apps Script editor.
// 4. CHANGE THE \`YOUR_SECRET_KEY\` variable below to a strong, unique secret key.
// 5. Click the "Deploy" button > "New deployment".
// 6. For "Select type", choose "Web app".
// 7. In the "Description" field, you can write "Business Card Scanner Collaboration v2".
// 8. For "Execute as", select "Me".
// 9. For "Who has access", select "Anyone". **IMPORTANT: This is necessary for the script to receive data.**
// 10. Click "Deploy".
// 11. On the next screen, click "Authorize access" and approve the permissions for the script to edit your Google Sheets.
// 12. After authorization, it will show you a "Web app URL". COPY this URL. You will need it for the Scanner Pintar app.
// --- START OF SCRIPT ---
// CONFIGURATION: Change this key to your own secret password.
const SECRET_KEY = "YOUR_SECRET_KEY_HERE";
// Define the exact header columns and their order to match the app's "Edit Kontak" form.
const HEADERS = [
"Timestamp", "Team Member", "Nama", "Jabatan", "Perusahaan", "Jenis Perusahaan",
"Telepon Kantor", "WhatsApp", "Email", "Tags", "Acara", "Tanggal", "Catatan"
];
function doPost(e) {
try {
const requestData = JSON.parse(e.postData.contents);
const { key, eventName, teamMember, cardData } = requestData;
if (key !== SECRET_KEY) {
return createJsonResponse({ "status": "error", "message": "Invalid Secret Key." });
}
if (!eventName || !teamMember || !cardData) {
return createJsonResponse({ "status": "error", "message": "Missing required data: eventName, teamMember, or cardData." });
}
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = spreadsheet.getSheetByName(eventName);
if (!sheet) {
sheet = spreadsheet.insertSheet(eventName);
sheet.appendRow(HEADERS);
}
const dataRange = sheet.getDataRange();
const values = dataRange.getValues();
const headerRow = values[0];
const nameIndex = headerRow.indexOf("Nama");
const companyIndex = headerRow.indexOf("Perusahaan");
const whatsappIndex = headerRow.indexOf("WhatsApp");
let existingRowIndex = -1;
if (nameIndex > -1 && companyIndex > -1 && whatsappIndex > -1) {
for (let i = 1; i < values.length; i++) {
const row = values[i];
if (row[nameIndex] === cardData.nama &&
row[companyIndex] === cardData.perusahaan &&
row[whatsappIndex] === cardData.whatsapp) {
existingRowIndex = i + 1;
break;
}
}
}
const timestamp = new Date();
const newRowData = HEADERS.map(header => {
switch(header) {
case "Timestamp": return timestamp;
case "Team Member": return teamMember;
case "Nama": return cardData.nama || "";
case "Jabatan": return cardData.jabatan || "";
case "Perusahaan": return cardData.perusahaan || "";
case "Jenis Perusahaan": return cardData.jenis_perusahaan || "";
case "Telepon Kantor": return cardData.telepon_kantor ? "'" + cardData.telepon_kantor : "";
case "WhatsApp": return cardData.whatsapp || "";
case "Email": return cardData.email || "";
case "Tags": return (cardData.tags || []).join(', ');
case "Acara": return cardData.acara || "";
case "Tanggal": return cardData.tanggal || "";
case "Catatan": return cardData.catatan || "";
default: return "";
}
});
if (existingRowIndex !== -1) {
const range = sheet.getRange(existingRowIndex, 1, 1, HEADERS.length);
range.setValues([newRowData]);
} else {
sheet.appendRow(newRowData);
}
return createJsonResponse({ "status": "success" });
} catch (error) {
return createJsonResponse({ "status": "error", "message": error.toString() });
}
}
function createJsonResponse(obj) {
return ContentService
.createTextOutput(JSON.stringify(obj))
.setMimeType(ContentService.MimeType.JSON);
}
Langkah 3: Atur Kunci Rahasia (Secret Key)
Di dalam kode yang baru saja Anda tempel, cari baris: const SECRET_KEY = "GANTI_DENGAN_KUNCI_RAHASIA_ANDA";
Ganti GANTI_DENGAN_KUNCI_RAHASIA_ANDA dengan kata sandi unik Anda sendiri. Penting: Kunci ini harus sama persis dengan yang Anda masukkan di aplikasi Scanner Pintar.
Simpan proyek skrip dengan mengklik ikon disket.
Langkah 4: Deploy sebagai Web App
Klik tombol biru Deploy di kanan atas, lalu pilih New deployment.
Di sebelah "Select type", klik ikon roda gigi dan pilih Web app.
Pada bagian "Configuration":
Description: (Opsional) Beri nama, contohnya "Scanner Pintar Kolaborasi".
Execute as: Pilih Me.
Who has access: Pilih Anyone. Ini penting agar aplikasi bisa mengirim data.
Klik Deploy.
Langkah 5: Otorisasi dan Salin URL
Google akan meminta izin. Klik Authorize access dan ikuti petunjuk untuk menyetujui akses skrip ke Google Sheet Anda.
Setelah berhasil, Anda akan melihat jendela "Deployment successful". Salin Web app URL yang ditampilkan.
URL inilah yang Anda tempel ke kolom "URL Web App Apps Script" di aplikasi Scanner Pintar.
Selesai! Sekarang Anda bisa mengisi ketiga kolom di aplikasi, membuat QR Code, dan membagikannya ke tim Anda.