n8n і Google Sheets: зіставлення ID та оновлення визначених стовпців
Створіть процес n8n для Google Sheets: перевіряйте ID записів, оновлюйте визначені стовпці й спрямовуйте відсутні або дубльовані збіги на перевірку.

Перевірено за наведеними джерелами .
Підготуйте інтеграцію n8n із Google Sheets
Цей посібник з n8n і Google Sheets пропонує контрольований навчальний робочий процес: прийняти один запит на оновлення, підрахувати точні збіги ID, оновити automation_status лише за єдиного збігу й додати винятки на окремий аркуш для перевірки. Кроки та код — це навчальний приклад із критеріями приймання нижче; результатів фактичного виконання не наведено.
Для початку потрібні робочий простір n8n, наявні робочі облікові дані Google Sheets і копія навчальної електронної таблиці. Створення облікових даних, налаштування розкладу для промислового використання, пакетна обробка, масштабування й оптимізація квот виходять за межі посібника. Перед побудовою підготуйте наведені нижче тестові дані. Приклад таблиці Records містить запропоновані навчальні дані: зберігайте ID як текст. Надішліть чотири запити окремо, по одному на виконання, зі значеннями record_id A-001, A-002, A-999 і порожнім рядком, щоразу задаючи automation_status значення ready. Не додавайте A-999 до Records.
| Розташування | Поля | Призначення |
|---|---|---|
| Аркуш Records | record_id, automation_status, team_notes | Робочі дані для практики |
| Аркуш Review | requested_id, proposed_value, classification, match_count | Перевірка винятків |
| Запит | record_id, automation_status | Одне запропоноване оновлення |
| record_id | automation_status | team_notes |
|---|---|---|
| A-001 | pending | Підтвердити адресу доставки |
| A-002 | pending | Очікуємо на фінансовий відділ |
| A-002 | on_hold | Зателефонувати перед відправленням |
На нашу думку, відповідальність за стовпці варто визначити до підключення вузла запису: так колезі буде простіше перевірити заплановану зміну.
1. Підготуйте один запит і прочитайте рядки

Використовуйте стабільні текстові ідентифікатори в record_id. У цій вправі застосовується точна текстова рівність: без видалення пробілів, зміни регістру чи перетворення на числа. Наприклад, A-001 відрізняється від a-001. Читання всіх рядків спрощує цю невелику навчальну вправу. Створіть перші вузли так.
- Додайте Manual Trigger, а потім Edit Fields із назвою Request.
- У Request задайте record_id значення A-001, а automation_status — ready. Виконуйте лише один запит за одне виконання.
- Додайте вузол Google Sheets з операцією Get Row(s). Виберіть наявні облікові дані, документ і аркуш Records; не задавайте фільтрів читання.
- У Settings вузла читання ввімкніть Always Output Data.
Документація n8n описує вибір наявних облікових даних і стандартне отримання всіх рядків через Get Row(s). Always Output Data повертає порожній елемент, коли вузол не повертає даних; код зіставлення має виключати цей службовий елемент.
Sources: n8n-docs/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/sheet-operations.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/understand-workflows/workflow-components/work-with-nodes.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub
2. Підрахуйте збіги та спрямуйте запит

Додайте вузол Code після читання та виберіть JavaScript, Run Once for All Items. n8n підтримує доступ до всіх вхідних елементів і звернення до першого елемента вузла за його назвою. Вставте цей запропонований навчальний код:
const request = $('Request').first().json; const id = request.record_id; const valid = typeof id === 'string' && id.trim().length > 0; const rows = $input.all().map(item => item.json).filter(row => Object.prototype.hasOwnProperty.call(row, 'record_id')); const count = valid ? rows.filter(row => typeof row.record_id === 'string' && row.record_id === id).length : 0; return [{ json: { requested_id: id ?? '', proposed_value: request.automation_status, classification: !valid ? 'invalid' : count === 1 ? 'unique' : count === 0 ? 'missing' : 'duplicate', match_count: count } }];
Додайте вузол Switch із правилами для classification зі значеннями unique, missing, duplicate та invalid. Увімкніть резервний вихід Extra Output. Ці класифікації — умовні позначення, обрані для посібника. Підключіть unique до гілки оновлення, а решту виходів і резервний вихід — до перевірки.

На нашу думку, неочікувану класифікацію слід спрямовувати на перевірку, а не до гілки запису. Так резервний вихід стає свідомим рішенням.
Sources: Using the Code node, n8n-docs/docs/build/work-with-data/transform-data/expression-reference/nodeinputdata.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/work-with-data/reference-data/reference-previous-nodes.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.switch.md at main · n8n-io/n8n-docs · GitHub
3. Обмежте запис і додайте винятки

У гілці unique налаштуйте вузол Google Sheets у n8n за наведеними нижче кроками. Update Row оновлює наявні рядки, а ручне зіставлення визначає окремі стовпці. Edit Fields може відкидати поля, які не були задані явно.
- Додайте Edit Fields до гілки unique. Задайте record_id зі значення requested_id, а automation_status — зі значення proposed_value.
- Увімкніть опцію відкидання інших вхідних полів.
- Додайте Google Sheets Update Row для аркуша Records і виберіть record_id як стовпець для зіставлення.
- Виберіть Map Each Column Manually. Зіставте лише record_id та automation_status; не використовуйте Append or Update Row.
Повністю виключіть team_notes: видаліть його зіставлення, а не залишайте значення порожнім. Надані матеріали реалізації з гілки master показують, що ручне зіставлення у вузлі Google Sheets версії 4 і новіших перетворює зіставлені значення null або undefined на порожні рядки. Інша допоміжна функція пропускає отримані властивості зі значеннями null або undefined, тому попереднє зіставлення має значення. Документація не має дати, а реалізацію не прив’язано до конкретної версії; установлені випуски та назви елементів інтерфейсу можуть відрізнятися.
Для гілки перевірки використайте Google Sheets Append Row на аркуші Review. Вручну зіставте requested_id, proposed_value, classification і match_count із вихідними даними класифікації. Append Row додає рядок у кінці; ця процедура перевірки — запропонований нами підхід, а не вбудована функція перевірки винятків.
Sources: n8n-docs/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/sheet-operations.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub, n8n/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts at master · n8n-io/n8n · GitHub, n8n/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts at master · n8n-io/n8n · GitHub
4. Перевірте зміни та усуньте проблеми

Перед кожним запуском зафіксуйте team_notes, виконайте робочий процес, а потім повторно прочитайте аркуш. Використовуйте ці запропоновані критерії приймання для свого робочого процесу n8n із Google Sheets.
| Запит | Аркуш Records | Аркуш Review |
|---|---|---|
| Унікальний ID | Змінюється лише automation_status; team_notes збережено | Без запису |
| Відсутній ID | Без змін | Запис missing, кількість 0 |
| Дубльований ID | Обидва відповідні рядки без змін | Запис duplicate, кількість збігів |
| Порожній ID | Без змін | Запис invalid, кількість 0 |
Якщо результати неочікувані, перегляньте Executions і використайте Execute step для перевірки окремих вузлів. Перевірте вибрані документ, аркуш, розташування заголовків і даних, типи ID, вихідні дані класифікації та зіставлення для запису. Якщо замінюєте читання всіх рядків на читання з фільтром, явно виберіть Return All Matches: інакше, згідно з документацією n8n, повертається лише перший відповідний результат.
Визначення відповідальності за стовпці звужує область запису, але надані джерела не підтверджують транзакційного забезпечення унікальності, блокування чи виявлення конфліктів між пошуком і оновленням. Тому одночасні зміни в клітинках, за які відповідає автоматизація, можуть залишатися поза захистом цього навчального робочого процесу.
Sources: Sheet Within Document operations | Nodes | n8n Docs, n8n-docs/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/sheet-operations.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/understand-workflows/workflow-components/work-with-nodes.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/flow-logic/handle-errors-gracefully.md at main · n8n-io/n8n-docs · GitHub


