Xin chào các bạn!
Google Sheets từ lâu đã là 1 công cụ bảng tính cực kỳ hữu ích, quen thuộc với nhiều người trên nền tảng web nhất là trong làm việc nhóm. Thật lòng mà nói, tôi sử dụng Google Sheets trong công việc và cuộc sống hàng ngày còn nhiều hơn bộ công cụ Microsoft Excel trên máy tính nhờ trải nghiệm xuyên suốt trên nhiều thiết bị, những hàm đặc biệt và khả năng mở rộng tính năng thông qua Google Apps Script và các Add on.
Khi sử dụng Python để phân tích dữ liệu, tôi chọn tải dữ liệu trực tiếp từ Google Sheets vào project cho tiện thay vì phải xuất file định dạng csv, xlsx rồi mới tải. Sau khi xử lý xong xuôi, tôi cũng thường xuyên lựa chọn xuất dữ liệu ra Google Sheets để lưu trữ và chia sẻ tới đội nhóm trong công ty và đối tác. Ngoài ra với các ứng dụng web scraping, trích xuất dữ liệu từ các báo thì Google Sheets cũng được chọn để lưu trữ các dữ liệu đã qua xử lý một cách tiện lợi, đính kèm link khi gửi thông tin chi tiết cho người nhận tin.
Thông qua bài hướng dẫn ngắn này, hy vọng các bạn có thể đọc và xuất dữ liệu Google Sheets với Python dễ dàng để ứng dụng vào công việc của mình nhé.
Nội dung chính
Kích hoạt tài khoản Google Cloud
Để có thể tương tác với các dịch vụ của Google thông qua API và các thư viện Python, bạn cần kích hoạt tài khoản Google Cloud (đối với lần đầu sử dụng) và tạo khóa bảo mật để trao đổi thông tin với API.

Tạo Project trên Google Cloud Console
Tạo project (dự án) đầu tiên của bạn trên Google Cloud bằng cách nhập tên mô tả dự án và chuyển đến bước tiếp theo.

Tạo service account và credential
Tạo tài khoản service account
và khóa bảo mật (credential)
đầu tiên của bạn. Tìm mục APIs & Services tại thanh menu ở phía bên trái màn hình, sau đó chọn Credentials.

Đến đây, các bạn sẽ cần tạo một Service account – đây là tài khoản dành cho mục đích tương tác với Google Cloud thông qua bot hoặc các chương trình được lập trình sẵn.

Nhập các thông tin mô tả Service account này để các bạn dễ nhận diện và quản lý về sau khi bạn có nhiều dự án và service account khác nhau.

Tiếp theo, các bạn sẽ cần tạo 1 khóa bảo mật cho Service account được tạo ra. Chọn mục Manage service account ngay bên cạnh tên service account bạn mới tạo ra như hình dưới đây. Hãy copy địa chỉ Email service account sheet-api-connect@mrthinh.iam.gserviceaccount.com
vào Notepad để sử dụng trong các bước tiếp theo nhé.

Tiếp theo bạn chọn Add Key và Create new key như hình mô tả.

Ở màn hình tiếp theo các bạn chọn định dạng khóa bảo mật là JSON sau đó click chọn Create để tải về khóa bảo mật là 1 file có đuôi .json
.

Bật dịch vụ Google Sheets API và Google Drive API
Để làm việc với Google Sheets bạn cần bật 2 dịch vụ API là Google Drive API và Google Sheets API. Hãy nhập sheet api
và drive api
tương ứng vào thanh tìm kiếm như hình bên dưới để tìm 2 dịch vụ trên. Chọn kết quả tìm kiếm tương ứng với Google Sheets API và Google Drive API sau đó click chọn Enable ở màn hình kế tiếp để bật dịch vụ.


Chia sẻ quyền chỉnh sửa file Google Sheets với service account
Như vậy là bạn đã tạo xong Service account và khóa bảo mật để tương tác với Google Sheets API rồi đấy. Để kết nối với Sheet API trong Python, chúng ta sử dụng thư viện gspread
.
Để có thể đọc/ghi dữ liệu Google Sheets, bạn cần chia sẻ quyền Editor (Chỉnh sửa) của file Google Sheets cần dùng cho tài khoản service account vừa được tạo ra ở trên

Nếu trên máy tính của bạn chưa cài đặt thư viện gspread thì hãy thực thi câu lệnh pip install gspread
trong Terminal/Command Prompt hoặc 1 cell của Jupyter Notebook đang sử dụng.
Tạo 1 cell trong Jupyter Notebook để nhập các thư viện cần sử dụng vào project và khai báo xác thực oauth2client.
Đến đây bạn chỉ còn làm 1 bước cuối cùng nữa là copy Sheet ID và Sheet Name của sheet bạn muốn đọc dữ liệu. Trong hình minh họa dưới đây, bạn có thể tìm thấy Sheet ID trong đường link trên thanh địa chỉ của trình duyệt là 1tpyXydttojObdSW9MusCj-7dG10BkrrDyUDeVQQSnN4
còn Sheet Name tương ứng là export_social_network_ads_sample

Đọc dữ liệu từ Google Sheets
Giờ đây bạn có thể bắt đầu đọc toàn bộ dữ liệu từ Sheet trên vào dataframe trong Python.
Thành quả đạt được trong Jupyter Notebook như sau:

Xuất dữ liệu qua Google Sheets
Để xuất dữ liệu qua Google Sheets ở 1 sheet mới, trước tiên bạn cần tạo sheet đó với số dòng và cột tương ứng. Ví dụ tôi muốn tạo 1 sheet mới có tên là test_sheet để lưu trữ dữ liệu muốn xuất ra, sheet này có số dòng là 1000 và số cột là 26.
new_sheet = wks.add_worksheet('test_sheet', rows=1000, cols=26)
new_sheet = wks.add_worksheet(title=”test_sheet_2″, rows=len(df.index), cols=len(df.columns))
# upload dataframe to google sheets
new_sheet.update([df.columns.values.tolist()] + df.values.tolist())

Chào bạn, bạn viết của bạn rất hay. Cho mình hỏi có thể tìm kiếm dữ liệu từ bot telegram và xuất ra bot telegram không bạn
Chào Quang,
Cám ơn bạn đã phản hồi. Mình không đi quá sâu vào việc xây dựng bot telegram nên hiện tại chủ yếu tạo bot để gửi thông tin. Bạn có thể tìm hiểu thêm các ứng dụng khác trên Internet xem sao nhé. Chúc bạn thành công!