Thực hành Google Sheets - Biến Google Sheets thành database cho workflow
Có thể bạn đã biết, Google Sheets được hàng triệu người sử dụng mỗi ngày để làm bảng tính.
Bên cạnh đó, nó cũng có thể trở thành một cơ sở dữ liệu vô cùng mạnh mẽ (và miễn phí), chứa được vài nghìn cho tới vài trăm nghìn dòng dữ liệu.
Google Sheets có khá nhiều ưu điểm:
- Hoàn toàn miễn phí - Không giới hạn số lượng sheet (nhiều dữ liệu quá sẽ hơi lag)
- Chia sẻ dễ dàng - Cả team cùng xem và chỉnh sửa real-time
- Truy cập mọi nơi - Điện thoại, máy tính, tablet đều xem được
- API mạnh mẽ - Đọc, ghi, xóa dữ liệu từ code hoặc n8n đều cực kỳ dễ
- Công thức quen thuộc - Dùng khá giống Excel, không cần học lại từ đầu
Nói chung, mình nghĩ các bạn đa phần đều đã biết dùng Google Sheets rồi. Giờ chỉ cần học cách kết nối nó với n8n thôi là được!
Trong bài này, chúng ta sẽ học cách sử dụng Google Sheets làm nơi đọc/ghi/lưu trữ dữ liệu cho workflow của bạn!

Thiết lập Google Credentials
Đây là phần quan trọng nhất, có thể hơi dài dòng nhiều khê nhưng bạn đừng lo. Bạn chỉ cần setup đúng một lần, những lần sau bạn chỉ việc kéo thả node và chạy workflow thôi.
Chúng ta sẽ thực hiện các bước sau:
- Tạo
Google Cloud Project- Nơi quản lý tất cả API và kết nối - Bật
Google Sheets API- Cho phép ứng dụng bên ngoài truy cập Sheets - Tạo
OAuth Consent Screenvà cấp quyền truy cập - Màn hình xin phép truy cập dữ liệu - Cấu hình quyền truy cập (Scopes) - Xác định n8n được phép làm gì với Google Sheets của bạn (đọc, ghi, xóa, ...)
- Tạo
OAuth Credentials- LấyClient IDvàClient Secretđể bỏ vàon8n
⏱️ Bạn sẽ mất khoảng 15-20 phút cho lần đầu tiên. Nếu bạn dùng n8n cloud thì có thể bỏ qua các bước nàyé!
1. Tạo Google Cloud Project
Google Cloud Console là nơi quản lý tất cả kết nối API. Đừng lo, setup một lần là xong!
-
Truy cập Google Cloud Console
-
Tạo project mới:
- Click vào
Select a projectở góc trên bên trái - Chọn
New project - Đặt tên project dễ nhớ, ví dụ:
n8n-automationhoặcworkflow-database - Click
Create

- Click vào
💡 Mẹo: Đặt tên có chữ "n8n" để sau này dễ tìm lại trong danh sách project!
2. Bật Google Sheets và Google Drive API
Bước này cho phép ứng dụng bên ngoài (n8n) truy cập vào Google Sheets của bạn.
- Trong thanh tìm kiếm, gõ
Google Sheets API
- Click vào kết quả đầu tiên
- Click
Enableđể bật API
- Tương tự, bật
Google Drive API, ClickEnableđể bật API

Xong bước này, Google đã cho phép các ứng dụng khác truy cập Sheets của bạn (tất nhiên là cần bạn đăng nhập và cho phép nữa).
3. Tạo OAuth Consent Screen
OAuth Consent Screen là màn hình xin phép truy cập dữ liệu. Giống như khi bạn đăng nhập app hoặc website bằng Google vậy đó!
-
Ở menu bên trái, chọn
OAuth consent screen
-
Bấm
Get Started
-
Điền thông tin cơ bản:
- App name:
n8n Automation(hoặc tên gì bạn thích cũng được) - Ở mục
Audience, ChọnExternalvà bấmNext
- User support email: Email của bạn
- Developer contact: Email của bạn
- Bấm
Save and continue
- App name:
-
Trong phần Audience, thêm Test Users:
- Bấm
Add users - Thêm email Google của bạn vào danh sách

- Bấm
⚠️ Quan trọng: Phải thêm email của bạn vào Test Users, nếu không sẽ không kết nối được!
4. Cấu hình quyền truy cập (Scopes)
Bước này xác định n8n được phép làm gì với Google Sheets của bạn.
| Scope | Cho phép |
|---|---|
spreadsheets |
Đọc và chỉnh sửa tất cả sheets |
spreadsheets.readonly |
Chỉ đọc, không được sửa |
-
Trong tab
Data accessbên trái, click "Add or remove scopes"
-
Tìm và chọn scope Google Sheets:
https://www.googleapis.com/auth/spreadsheetshoặcSee, edit, create, and delete all your Google Sheets spreadsheets

-
Click "Update" và "Save"

5. Tạo OAuth Credentials và kết nối n8n
Đây là bước cuối cùng: tạo creadentials để n8n có thể truy cập Google Sheets!
Credential là thông tin mật, tương tự chìa khoá để n8n kết nối tới bên thứ 3. Bạn nào quên
credentialslà gì thì xem lại mấy bài đầu nhé!
1. Tạo Credentials trong n8n:
- Từ trang chủ, chọn sang tab
Credentials - Bấm
Create Credentials, chọnGoogle Sheets OAuth2 API
- Copy OAuth Redirect URL từ n8n. Còn 2 khung
Client IDvàClient Secretsẽ có ở bước sau.
2. Quay lại Google Cloud Console, tạo OAuth Client ID:
-
Vào
APIs→Credentials -
Click
Create Credentials→OAuth client ID
-
Chọn
Web application -
Paste OAuth Redirect URL từ n8n vào
Authorized redirect URIs. Nếu bạn chạy ở self-host, Redirect URL sẽ có dạnghttp://localhost...
-
Click
Create. Bạn sẽ nhận được Client ID và Client Secret - nhớ copy 2 cái này và giấu kĩ đừng để lộ nhé!
Nếu quên, các bạn có thể vào https://console.cloud.google.com/apis/credentials để tìm lại.
Quay lại n8n:
-
Paste
Client IDvàClient Secretvào credential của n8n -
Bấm
Sign in with Google
-
Chọn tài khoản Google của bạn

⚠️ Lưu ý: Phải chọn đúng tài khoản đã thêm vào Test Users ở bước 4!
🎉 Xong rồi! n8n giờ đã có thể đọc/ghi Google Sheets của bạn! Bạn cũng có thể bấm góc trên bên trái để đổi tên credential vừa lưu cho dễ nhớ!
Các thao tác CRUD cơ bản
Ok, sau khi kết nối xong thì chúng ta sẽ bắt đầu làm việc thôi.
Trước khi đi tiếp, ta sẽ tạo một sheet mẫu để làm việc:
Tạo Google Sheet mới với cấu trúc sau:
| ID | Name | Phone | Date_Added | Status | |
|---|---|---|---|---|---|
| 1 | Nguyễn Văn A | [email protected] | 0901234567 | 2024-01-15 | Active |
| 2 | Trần Thị B | [email protected] | 0912345678 | 2024-01-16 | Inactive |
| 3 | Lê Văn C | [email protected] | 0923456789 | 2024-01-17 | Active |
Các bạn có thể vào sheet mẫu tại https://docs.google.com/spreadsheets/d/10w8mk4rG2R1JcIWu0dJRKo4gToyuQbT8RWF0Ea9Cbxg/edit?usp=sharing, sau đó bấm File -> Make a copy để tạo bản sao.
Ta sẽ lần lượt dùng n8n để thực hiện các thao tác CRUD (Create, Read, Update, Delete) với Google Sheets.
- Create: Tạo mới (thêm hàng)
- Read: Đọc (lấy dữ liệu)
- Update: Cập nhật (sửa dữ liệu)
- Delete: Xóa (xóa dữ liệu)
Read - Đọc dữ liệu từ Google Sheets
Đây là thao tác bạn sẽ dùng nhiều nhất. Hãy bắt đầu với workflow đơn giản:
Manual Trigger → Google Sheets (Read) → Xem kết quả
Cấu hình

- Chọn
Google Sheets->Get Rows in Sheetnode vào canvas - Chọn
credentialđã tạo ở bước trước - Cấu hình:
- Operation: Get Many (lấy nhiều hàng)
- Document: Chọn spreadsheet của bạn
- Sheet: Chọn sheet cần đọc
| By Url | From List |
|---|---|
Dán URL của spreadsheet vào. ![]() |
Chọn spreadsheet và sheet từ danh sách có sẵn. ![]() |
Kết quả trả về
[
{
"ID": "1",
"Name": "Nguyễn Văn A",
"Email": "[email protected]",
"Phone": "0901234567",
"Date_Added": "2024-01-15",
"Status": "Active"
},
{
"ID": "2",
"Name": "Trần Thị B",
"Email": "[email protected]",
"Phone": "0912345678",
"Date_Added": "2024-01-16",
"Status": "Inactive"
}
]

Mỗi hàng trong sheet trở thành một object JSON, mỗi header trở thành key của object đó!
Nếu muốn lọc bớt dữ liệu (ví dụ chỉ lấy những khách hàng Active), bạn có thể dùng Filters.

💡 Mẹo: Filter có thể dùng để giảm lượng dữ liệu xử lý, giúp workflow chạy nhanh hơn! Tuy nhiên filter của Google Sheets chỉ có thể lọc theo 1 cột với giá trị tương ứng.
Nếu muốn, bạn hãy dùng
Filter Nodetrong n8n mà ta đã học ở bài trước, để lọc dữ liệu theo nhiều điều kiện hơn!
Create/Append - Thêm dữ liệu mới
Khi có khách hàng mới đăng ký hoặc gửi mail, bạn muốn tự động thêm vào sheet:
Webhook (form submit) → Xử lý dữ liệu → Google Sheets (Append Row In Sheet)

Cấu hình
- Document: Chọn spreadsheet
- Sheet: Chọn sheet
- Columns: Map dữ liệu vào từng cột (Chọn Document và Sheet thì n8n sẽ tự động map các columns từ header của sheet)

Ví dụ data cần thêm:
{
"ID": "4",
"Name": "Phạm Văn D",
"Email": "[email protected]",
"Phone": "0934567890",
"Date_Added": "{{ $now.format('yyyy-MM-dd') }}",
"Status": "Active"
}
✨ Điểm hay: n8n sẽ tự động thêm vào hàng cuối cùng, không cần bạn tính toán vị trí!
Update - Cập nhật dữ liệu
Nếu khách hàng đổi số điện thoại hoặc cập nhật trạng thái thì sao? Ta chỉ cần update với Append or Update Row in Sheet node.
Trigger → Tìm record cần update → Google Sheets (Append or Update Row in Sheet)

Cấu hình
- Document: Chọn spreadsheet
- Sheet: Chọn sheet
- Column to Match: Chọn cột để tìm (ví dụ: Email hoặc ID)
- Value to Match: Giá trị cần tìm
Ví dụ: Cập nhật lại tên và ngày của khách hàng, dựa theo ID.

Delete - Xóa dữ liệu
Ta cũng có thể dễ dàng xóa hàng hoặc cột trong sheet bằng cách dùng node Delete Rows or Columns from Sheet

Cấu hình
- Start Row Number: Số hàng cần xóa (có thể dùng expression)
- Number of Rows to Delete: Số lượng hàng cần xóa (có thể dùng expression)

Ngoài ra, còn 1 số node khác như
Create Spreadsheet,Create Sheet,Delete Spreadsheet,Delete Sheet... các bạn có thể tìm hiểu thêm trong mục tham khảo phía dưới nhé
Một số điểm cần lưu ý
Đây là một số điểm cần lưu ý khi sử dụng Google Sheets node, giúp bạn tối ưu, bảo mật và sửa các lỗi thường gặp.
🚀 Tối ưu hiệu suất
-
Dùng Filter khi đọc: Thay vì đọc toàn bộ sheet rồi lọc trong n8n, hãy sử dụng tính năng Filter của Google Sheets node để chỉ lấy những hàng cần thiết. Điều này giảm lượng data cần đọc và xử lý, giúp workflow chạy nhanh hơn.
- Nếu chỉ cần lấy cột đầu tiên, hãy vào mục
Option->Return only First Matching Rowđể lấy hàng đầu tiên.
- Nếu chỉ cần lấy cột đầu tiên, hãy vào mục
-
Batch append thay vì append từng hàng: Nếu cần thêm 100 hàng, đừng để node Append chạy 100 lần. Thay vào đó, gom tất cả data vào một mảng và chạy một lần Append duy nhất. Cách này giảm số lượng API calls và tránh bị rate limit.
🔒 Bảo mật
- Giới hạn quyền truy cập: Nếu workflow chỉ cần đọc dữ liệu (ví dụ: tạo báo cáo), hãy share sheet với quyền
Viewerthay vìEditor. Điều này ngăn ngừa việc vô tình xóa hoặc sửa dữ liệu quan trọng. - Không lưu data nhạy cảm trong Sheets: Mật khẩu, số thẻ tín dụng, token API... tuyệt đối không nên lưu trong Google Sheets vì dễ bị lộ khi share hoặc export.
- Kiểm tra quyền truy cập định kỳ: Mỗi tháng, vào sheet và kiểm tra mục
Shaređể xem ai đang có quyền truy cập. Xóa quyền của những người không còn cần thiết, đặc biệt là nhân viên đã nghỉ việc hoặc đối tác đã kết thúc hợp tác.
🐛 Lỗi thường gặp
| Lỗi | Nguyên nhân | Cách sửa |
|---|---|---|
| Invalid credentials | Token OAuth đã hết hạn (thường sau 7 ngày nếu app ở chế độ Testing) hoặc Client ID/Secret bị sai | Vào Credentials trong n8n → Chọn Google Sheets credential → Click Sign in with Google để reconnect lại |
| Sheet not found | Tên sheet đã bị đổi, sheet bị xóa, hoặc bạn đang trỏ sai Spreadsheet ID |
Kiểm tra lại URL của sheet, chọn lại từ n8n, đảm bảo tên sheet hoặc id khớp chính xác (phân biệt hoa thường) |
| Permission denied | Tài khoản Google đang dùng không có quyền truy cập sheet, hoặc sheet đang ở chế độ private | Share sheet với email của tài khoản Google đã kết nối trong n8n (ít nhất quyền Editor nếu cần ghi dữ liệu) |
| Quota exceeded | Vượt quá giới hạn API của Google (100 requests/100 giây/user) | Thêm Wait Node giữa các thao tác, hoặc batch nhiều hàng trong 1 request thay vì gửi từng hàng |
| Dữ liệu sai cột | Tên cột bị đổi, tên cột trong n8n không khớp với header trong sheet (hoặc header row không phải hàng đầu tiên) | Kiểm tra header row trong sheet phải ở hàng 1, tên cột trong n8n phải khớp chính xác với header (kể cả khoảng trắng) |
Tạm kết
Trong bài này, chúng ta đã học cách setup OAuth cho Google Sheeets. Ta cũng đã thực hiện các thao tác CRUD (đọc, ghi, cập nhật, xóa) và áp dụng các best practices về hiệu suất và bảo mật khi làm việc với Google Sheets trong n8n.
Google Sheets là lựa chọn tuyệt vời cho workflow đơn giản, dùng được trong phần lớn trường hợp. Nhưng nếu bạn cần dữ liệu nhiều bảng, có quan hệ với nhau, nhiều cách nhìn dữ liệu (kanban, bảng, calendar...), hoặc kết hợp database với tài liệu thì Notion sẽ phù hợp hơn!
Ở bài sau chúng ta sẽ khám phá Notion, một nền tảng mạnh mẽ với khả năng tùy biến cao. Hẹn gặp lại bạn ở bài tiếp theo!
💡 Thực hành là cách tốt nhất để nhớ lâu. Nhớ kéo thả node và chạy thử rồi hãy tiếp tục học qua bài sau nhé!


