Cách kết nối Google Sheets với app của bạn
Để kết nối Google Sheets với app, bạn bật Google Sheets API trong một dự án Google Cloud, tạo một service account, chia sẻ bảng tính với địa chỉ email của service account, và lưu khóa của nó dưới dạng secret phía máy chủ. Máy chủ của bạn sau đó đọc các hàng bằng spreadsheets.values.get và thêm hàng bằng spreadsheets.values.append. Nếu người dùng cần kết nối bảng tính của chính họ, hãy dùng OAuth; còn nếu bảng tính hoàn toàn công khai, một API key đơn giản là đủ để đọc.
Hướng dẫn này bao gồm phương pháp nào phù hợp, các lệnh bạn cần, hạn mức và những điểm cần lưu ý, cùng các prompt cho công cụ tạo app bằng AI. Chi tiết về Google lấy từ tài liệu dành cho nhà phát triển của Google tính đến tháng 9/2026.
Vì sao cần kết nối bảng tính
Các lý do phổ biến:
- Giữ quy trình làm việc của đội. Nhân viên tiếp tục chỉnh sửa bảng giá hoặc lịch trong Sheets; app hiển thị nó.
- Thu thập dữ liệu ở nơi mọi người vẫn xem. Đăng ký mới, đơn hàng hay phản hồi biểu mẫu được ghi thành hàng.
- Báo cáo. Xuất dữ liệu app ra bảng tính cho những người làm việc chủ yếu với bảng tính.
- Một bước đệm. Bắt đầu từ bảng tính, rồi chuyển sang cơ sở dữ liệu đúng nghĩa. Xem cách biến bảng tính thành app.
Chọn cách app đăng nhập vào Google
Hướng dẫn thông tin xác thực của Google mô tả ba loại:
| Thông tin xác thực | Có thể truy cập gì | Phù hợp nhất với |
|---|---|---|
| API key | Chỉ dữ liệu công khai, chẳng hạn file được chia sẻ với "Bất kỳ ai có liên kết" | Đọc một bảng tính công khai |
| Service account | Dữ liệu do app của bạn sở hữu, hoặc các file cụ thể được chia sẻ với email của service account | App của bạn đọc và ghi các bảng tính của bạn |
| OAuth client ID | File của người dùng, sau khi họ đồng ý | Cho phép mỗi người dùng kết nối bảng tính của họ |
Với hầu hết app, service account là lựa chọn đúng: một bộ thông tin xác thực do bạn sở hữu, chỉ có quyền truy cập vào những bảng tính mà bạn chủ động chia sẻ với nó.
Từng bước với service account
- Tạo hoặc chọn một dự án Google Cloud và bật Google Sheets API.
- Tạo một service account và khóa cho nó. Khóa là một file JSON; hãy coi nó như mật khẩu.
- Chia sẻ bảng tính với địa chỉ email của service account, với quyền Viewer nếu chỉ đọc hoặc Editor nếu cần ghi. Hướng dẫn của Google nói rằng việc này thực hiện qua màn hình chia sẻ thông thường.
- Lưu khóa dưới dạng secret trên máy chủ, ví dụ
GOOGLE_SERVICE_ACCOUNT_JSON, cùng với ID bảng tính (chuỗi dài trong URL của sheet) dưới tênSHEET_ID. - Gọi API từ máy chủ bằng thư viện client của Google cho ngôn ngữ bạn dùng.
- Lưu đệm dữ liệu đọc nếu nhiều khách cùng xem một dữ liệu, để bạn không chạm hạn mức.
Các lệnh bạn sẽ dùng
Từ hướng dẫn đọc và ghi giá trị của Google:
| Phương thức | Chức năng |
|---|---|
spreadsheets.values.get | Đọc một vùng, chẳng hạn Leads!A1:E |
spreadsheets.values.batchGet | Đọc nhiều vùng trong một yêu cầu |
spreadsheets.values.update | Ghi vào một vùng cụ thể |
spreadsheets.values.append | Thêm hàng sau dữ liệu hiện có trong bảng |
Vùng dùng ký hiệu A1. Google lưu ý rằng vùng không có tên sheet, như A1:B2, sẽ áp dụng cho sheet đầu tiên, nên hãy ghi rõ tên tab để tránh bất ngờ khi ai đó sắp xếp lại các tab.
RAW và USER_ENTERED
Khi ghi cần valueInputOption:
- RAW lưu đúng những gì bạn gửi, dưới dạng văn bản.
=1+2được lưu thành văn bản=1+2. - USER_ENTERED xử lý dữ liệu như thể được gõ vào Sheets: ngày trở thành ngày và
=1+2trở thành công thức.
Nếu bạn ghi văn bản người dùng gõ trong app, hãy dùng RAW. Với USER_ENTERED, ai đó có thể gửi một công thức sẽ chạy khi đồng nghiệp mở bảng tính.
Hạn mức và lỗi
Tính đến tháng 9/2026, trang giới hạn của Sheets API của Google liệt kê:
| Giới hạn | Yêu cầu đọc | Yêu cầu ghi |
|---|---|---|
| Mỗi phút cho mỗi dự án | 300 | 300 |
| Mỗi phút cho mỗi người dùng trong mỗi dự án | 60 | 60 |
Không có giới hạn theo ngày miễn là bạn nằm trong hạn mức theo phút. Vượt quá sẽ trả về 429: Too many requests, và Google khuyến nghị exponential backoff có cắt ngắn: chờ lâu hơn sau mỗi lần thất bại, với độ trễ ngẫu nhiên, đến một mức tối đa. Một yêu cầu đơn lẻ kéo dài hơn 180 giây sẽ hết thời gian chờ.
Trong thực tế: đừng gọi API ở mỗi lượt xem trang. Lưu đệm dữ liệu bảng trong một phút trở lên, gom các lượt đọc bằng batchGet, và gom các lượt ghi khi có thể.
Các lựa chọn và đánh đổi
| Cách làm | Ưu điểm | Nhược điểm |
|---|---|---|
| Bảng tính là nguồn dữ liệu trực tiếp | Nhân viên chỉnh sửa trong công cụ quen thuộc; không cần xây màn hình quản trị | Có hạn mức, không có quyền theo từng hàng, dễ hỏng khi đổi tên cột |
| Đồng bộ bảng tính vào cơ sở dữ liệu | Đọc nhanh, đáng tin cậy; app vẫn chạy nếu Sheets gặp sự cố | Cần một tác vụ đồng bộ và quy tắc về bên nào thắng |
| Cơ sở dữ liệu trước, xuất ra bảng tính | App sở hữu dữ liệu; bảng tính chỉ là báo cáo | Chỉnh sửa trong bảng tính không chảy ngược lại |
| Công cụ tự động hóa ở giữa | Không cần code cho luồng đơn giản | Thêm một khoản đăng ký; khó gỡ lỗi hơn |
Với bất cứ thứ gì có nhiều người dùng hoặc dữ liệu nhạy cảm, cơ sở dữ liệu là nguồn chuẩn đáng tin cậy hơn. Xem cơ sở dữ liệu là gì.
Prompt cho công cụ tạo app bằng AI
Đọc một bảng tính:
Hiển thị tab "Menu" của Google Sheet của chúng tôi trên trang thực đơn. Dùng Google Sheets API từ máy chủ với một service account, khóa JSON nằm trong secret GOOGLE_SERVICE_ACCOUNT_JSON, và ID bảng tính trong SHEET_ID. Đọc vùng Menu!A2:D (tên, mô tả, giá, danh mục). Lưu đệm kết quả trong 5 phút. Nếu API lỗi, hiển thị phiên bản đã lưu đệm gần nhất. Không bao giờ gửi khóa đến trình duyệt.
Ghi các hàng:
Khi ai đó gửi form liên hệ, lưu vào cơ sở dữ liệu của chúng tôi và đồng thời thêm một hàng vào tab "Leads" (ngày, tên, email, nội dung) bằng spreadsheets.values.append với valueInputOption RAW. Nếu Google trả về 429, thử lại với exponential backoff; nếu vẫn thất bại, giữ khách hàng tiềm năng trong cơ sở dữ liệu và thử lại sau.
Những lỗi thường gặp
- Quên chia sẻ bảng tính với email của service account. Khi đó API trả về lỗi quyền dù khóa vẫn đúng.
- Khóa nằm ở frontend hoặc trong kho mã nguồn. Khóa JSON cấp quyền truy cập đến mọi bảng tính được chia sẻ với nó. Xem cách giữ API key an toàn.
- Dùng USER_ENTERED cho dữ liệu người dùng nhập, điều này cho phép chèn công thức.
- Gọi API ở mỗi yêu cầu và chạm hạn mức theo phút ngay khi có đợt truy cập đầu tiên.
- Phụ thuộc vào vị trí cột. Ai đó chèn một cột và app đọc nhầm dữ liệu. Hãy đọc hàng tiêu đề và ánh xạ theo tên, hoặc khóa tiêu đề.
- Chia sẻ bảng tính rộng hơn mức cần thiết. "Bất kỳ ai có liên kết" sẽ làm nó thành công khai.
- Dùng bảng tính làm cơ sở dữ liệu nhiều người dùng. Ghi đồng thời và thiếu quyền sẽ dẫn đến mất hoặc rò rỉ dữ liệu.
Danh sách kiểm tra
- Đã bật Sheets API; đã tạo service account
- Bảng tính được chia sẻ với email của service account, ở vai trò thấp nhất cần thiết
- Khóa và ID bảng tính được lưu dưới dạng secret phía máy chủ
- Mọi lệnh gọi đều thực hiện từ máy chủ
- Dùng tên tab trong các vùng
- Dùng RAW cho văn bản do người dùng cung cấp
- Dữ liệu đọc được lưu đệm; xử lý lỗi 429 bằng backoff
- App vẫn hoạt động ổn khi Sheets không khả dụng
- Đã quyết định bên nào là nguồn dữ liệu chuẩn
Google Sheets trong Mythex
Mythex có hai cách khác nhau để làm việc với Sheets. Connectors liên kết tài khoản Google của bạn với Mythex để agent có thể sử dụng khi bạn đang xây dựng, chẳng hạn đọc một bảng tính để tạo dashboard từ nó; tài liệu nói rằng thông tin xác thực nằm ở dịch vụ kết nối của Mythex và không bao giờ xuất hiện trong mã nguồn của bạn (xem Connectors, và phê duyệt mọi quyền mà Google yêu cầu). Còn để app đã xuất bản tự đọc hoặc ghi bảng tính, cách đáng tin cậy là cách trong hướng dẫn này: khóa service account được lưu dưới dạng secret của dự án và các lệnh gọi Sheets API từ máy chủ, như trong Integrate any API. Nếu bạn đã vượt quá khả năng của bảng tính, hãy yêu cầu agent chuyển dữ liệu vào cơ sở dữ liệu của dự án và xây một dashboard trên đó.
Câu hỏi thường gặp
Làm sao app của tôi đọc được một Google Sheet riêng tư?
Cách thường dùng là một service account trong Google Cloud: bật Sheets API, tạo service account và khóa của nó, rồi chia sẻ bảng tính với địa chỉ email của service account với quyền Viewer hoặc Editor. Máy chủ của bạn dùng khóa, được lưu dưới dạng secret, để gọi Sheets API.
Tôi có dùng Google API key để truy cập bảng tính được không?
Chỉ dùng được cho dữ liệu công khai. Hướng dẫn thông tin xác thực của Google nói rằng API key dành cho truy cập ẩn danh vào dữ liệu công khai, chẳng hạn các file được chia sẻ cho bất kỳ ai có liên kết. Sheet riêng tư cần service account hoặc OAuth.
Giới hạn của Google Sheets API là bao nhiêu?
Tính đến tháng 9/2026, Google liệt kê 300 yêu cầu đọc và 300 yêu cầu ghi mỗi phút cho mỗi dự án, cùng 60 yêu cầu mỗi loại mỗi phút cho mỗi người dùng trong mỗi dự án, và không có giới hạn theo ngày. Vượt quá sẽ trả về lỗi 429; Google khuyến nghị dùng exponential backoff có cắt ngắn.
Tôi có nên dùng Google Sheets làm cơ sở dữ liệu cho app không?
Phù hợp với app nhỏ, ít lưu lượng, nơi người dùng cũng chỉnh sửa dữ liệu trực tiếp trong bảng tính. Với nhiều người dùng, ghi thường xuyên, mối quan hệ giữa các bản ghi hoặc quyền riêng cho từng người dùng, một cơ sở dữ liệu thật đáng tin cậy hơn, và bạn vẫn có thể xuất ra bảng tính.