Ця інструкція допоможе вам налаштувати базову інтеграцію між Google Sheets та Grinfi за допомогою Google Apps Script. Після налаштування дані нових контактів будуть автоматично передаватися до обраного списку в Grinfi одразу після додавання нового рядка в таблицю.
Передумови налаштування
Для успішного налаштування вам знадобляться:
API-ключ Grinfi.
UUID ліста: Унікальний ідентифікатор списку в системі, куди будуть зберігатися нові контакти.
Підготовлена Google Таблиця: Створений документ із відповідними стовпцями для введення даних: Імʼя, Прізвище, LinkedIn ID (або URL), Email тощо.
Додатково: ознайомтеся з повною документацією API Grinfi.
🟡 Примітка: Google Apps Script має ліміти: до 90 хвилин виконання на день (безкоштовний акаунт) або 6 годин (Workspace). Для масового імпорту (>100 лідів за раз) краще використовуйте CSV-імпорт у Grinfi.
Крок 1. Підготовка структури таблиці
Для коректної роботи скрипта:
Створюйте імʼя колонки у таблиці тільки у першому рядку
Присвоюйте назви колонкам в точності з наведеним списком нижче (англійською мовою, з дотриманням пробілів і великих літер)
Колонка "LinkedIn ID" - обовʼязкова, у неї додавайте посилання на LinkedIn-профіль контакта, або його ID.
Інші колонки не обовʼязкові до використання і заповнення, додавайте їх за необхідності
Список заголовків та їх значення:
Назва колонки у таблиці | Значення |
First Name | Ім'я контакту |
Last Name | Прізвище контакту |
LinkedIn ID | LinkedIn URL/ID (обов'язкове поле) |
Електронна пошта | |
Company | Назва компанії |
Position | Посада |
Website | Домен компанії |
Headline | Заголовок профілю |
Location | Місцезнаходження |
Приклад заповнення таблиці
First Name | Last Name | LinkedIn ID | |
John | Doe | john-doe-123456 |
Крок 2. Налаштування Google Apps Script
Створіть Grinfi API Key за цим посиланням.
Знайдіть UUID ліста, у який будуть імпортуватись контакти (перейдіть на вкладку CRM → Lists, навпроти назви необхідного ліста натисніть "..." → Copy List ID)
Відкрийте вашу Google Таблицю.
Присвойте аркушу назву "Leads" (при використанні іншої назви аркушу - у наведеному нижче коді, в рядку var SHEET_NAME = 'Leads'; зазначте коректну назву аркушу замість Leads)
На панелі інструментів перейдіть до меню Розширення (Extensions) → Apps Script.
Вставте наведений нижче фрагмент коду, замінивши значення YOUR_API_KEY та YOUR_LIST_UUID на ваші актуальні дані.
var GRINFI_API_KEY = 'Bearer YOUR_API_KEY';
var LIST_UUID = 'YOUR_LIST_UUID';
var SHEET_NAME = 'Leads';
var FIELD_MAP = {
'First Name': 'first_name',
'Last Name': 'last_name',
'LinkedIn ID': 'linkedin_id',
'Email': 'email',
'Company': 'company_name',
'Position': 'position',
'Website': 'domain',
'Headline': 'headline',
'Location': 'raw_address'
};
function sendLeadToGrinfi(e) {
var sheet = e.source.getActiveSheet();
if (sheet.getName() !== SHEET_NAME) return;
var editedRow = e.range.getRow();
if (editedRow <= 1) return;
if (editedRow !== sheet.getLastRow()) return;
var lastCol = sheet.getLastColumn();
var headers = sheet.getRange(1, 1, 1, lastCol).getValues()[0];
var values = sheet.getRange(editedRow, 1, 1, lastCol).getValues()[0];
var lead = {};
for (var i = 0; i < headers.length; i++) {
var header = headers[i].toString().trim();
var apiField = FIELD_MAP[header];
if (apiField && values[i]) {
lead[apiField] = values[i].toString().trim();
}
}
if (!lead.linkedin_id) return;
var payload = {
lead: lead,
list_uuid: LIST_UUID,
update_if_exists: true,
move_to_list: true
};
var options = {
method: 'POST',
headers: {
'Authorization': GRINFI_API_KEY,
'Content-Type': 'application/json'
},
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(
'https://leadgen.grinfi.io/leads/api/leads/upsert',
options
);
Logger.log('Row ' + editedRow + ': ' + response.getContentText());
}
Крок 3. Налаштуйте тригер
Щоб скрипт автоматично відправляв дані при додаванні нового рядка до таблиці (зокрема й при вставці з інших джерел), необхідно налаштувати тригер:
1. В Apps Script відкрийте меню зліва: Triggers
2. Натисніть "+ Add Trigger"
3. Оберіть:
• Function: sendLeadToGrinfi
• Event source: From spreadsheet
• Event type: On edit
4. Натисніть Save
5. Дозвольте доступ до Google Sheets (з'явиться вікно авторизації)
Крок 4. Перевірте роботу скрипта
1. Перейдіть у таблицю
2. Додайте новий рядок з даними (обов'язково заповніть стовпець LinkedIn ID)
3. Зачекайте 2–5 секунд
4. Відкрийте Grinfi → відповідний ліст, перевірте чи у списку зʼявився вказаний у таблиці контакт
Якщо контакт не з'явився:
• В Apps Script відкрийте Execution log та перевірте помилки
• Перевірте правильність: API-ключа, UUID ліста, назву аркуша
Як це працює (технічно)
1. При додаванні нового рядка спрацьовує встановлений тригер
2. Скрипт перевіряє: це правильний лист? це новий рядок? є LinkedIn ID?
3. Скрипт читає назви колонок із рядка 1 і за таблицею маппінгу (FIELD_MAP) знаходить відповідні поля API
4. Відправляє запит на Grinfi API (Якщо такого контакту немає - скрипт його створить, якщо він вже існує - оновить дані та перемістить у вказаний ліст)
5. Контакт з'являється у вказаному списку