Logohocn8n.ai
Đổi server VN (nếu load chậm)

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!

google_sheets_example

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:

  1. Tạo Google Cloud Project - Nơi quản lý tất cả API và kết nối
  2. Bật Google Sheets API - Cho phép ứng dụng bên ngoài truy cập Sheets
  3. Tạo OAuth Consent Screen và cấp quyền truy cập - Màn hình xin phép truy cập dữ liệu
  4. 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, ...)
  5. Tạo OAuth Credentials - Lấy Client IDClient Secret để bỏ vào n8n

⏱️ 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!

  1. Truy cập Google Cloud Console

  2. 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-automation hoặc workflow-database
    • Click Create

    new_project

💡 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.

  1. Trong thanh tìm kiếm, gõ Google Sheets API google_sheet_api
  2. Click vào kết quả đầu tiên
  3. Click Enable để bật API google_sheet_enable
  4. Tương tự, bật Google Drive API, Click Enable để bật API google_drive_api google_drive_enable

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 đó!

  1. Ở menu bên trái, chọn OAuth consent screen oauth_consent_screen

  2. Bấm Get Started get_started

  3. Đ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ọn External và bấm Next external
    • User support email: Email của bạn
    • Developer contact: Email của bạn
    • Bấm Save and continue
  4. 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

    audience

⚠️ 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
  1. Trong tab Data access bên trái, click "Add or remove scopes"

    data_access

  2. Tìm và chọn scope Google Sheets:

    • https://www.googleapis.com/auth/spreadsheets hoặc See, edit, create, and delete all your Google Sheets spreadsheets

    spreadsheet_scopes

  3. Click "Update" và "Save"

    oauth_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 credentials là gì thì xem lại mấy bài đầu nhé!

1. Tạo Credentials trong n8n:

  1. Từ trang chủ, chọn sang tab Credentials
  2. Bấm Create Credentials, chọn Google Sheets OAuth2 API sheet_oauth_cred
  3. Copy OAuth Redirect URL từ n8n. Còn 2 khung Client IDClient Secret sẽ có ở bước sau. init_sheet_oauth_cred

2. Quay lại Google Cloud Console, tạo OAuth Client ID:

  1. Vào APIs & ServicesCredentials

  2. Click Create CredentialsOAuth client ID

    google_credentials

  3. Chọn Web application

  4. Paste OAuth Redirect URL từ n8n vào Authorized redirect URIs. Nếu bạn chạy ở self-host, Redirect URL sẽ có dạng http://localhost...

    redirect_uri

  5. Click Create. Bạn sẽ nhận được Client IDClient Secret - nhớ copy 2 cái này và giấu kĩ đừng để lộ nhé! sample_client_id_secret

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:

  1. Paste Client IDClient Secret vào credential của n8n

  2. Bấm Sign in with Google

    gmail_credential_config

  3. Chọn tài khoản Google của bạn

    choose_google_account

⚠️ 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 Email 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 TriggerGoogle Sheets (Read)Xem kết qu

Cấu hình

sample_sheet_node

  1. Chọn Google Sheets -> Get Rows in Sheet node vào canvas
  2. Chọn credential đã tạo ở bước trước
  3. 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. sheet_example Chọn spreadsheet và sheet từ danh sách có sẵn. gsheet_config

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"
  }
]

sheet_output

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.

sheet_filter

💡 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 Node trong 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)

sample_sheet_node

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)

sheet_append

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)

sample_sheet_node

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.

sheet_update

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

sample_sheet_node

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)

sheet_delete

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. only_first_matching_row
  • 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 Viewer thay 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é!

📚 Tài liệu tham khảo

Facebook Messenger

fb.com/toidicodedao

Email Support

[email protected]

Telegram

t.me/hoccodeai