Upload file lên Google Drive bằng Python

Bài viết này hướng dẫn cách viết script Python để upload file tự động lên Google Drive sử dụng lib Pydrive. Rất phù hợp với nhu cầu backup dữ liệu tự động vào Google Drive.

Bạn phải tạo Client ID cho cho đoạn script upload file, lúc này script của bạn gọi là “ứng dụng bên thứ 3 – third party app“. Sau đó tài khoản Google cấp quyền cho Client ID đó truy cập vào Drive thì mới upload được. Bài viết này sẽ hướng dẫn chi tiết các bước thực hiện.

Các bước thực hiện

  • Bước 1: cài đặt Python 3
  • Bước 2: cài đặt thư viện pydrive
  • Bước 3: cài Visual Studio Code để lập trình Python
  • Bước 4: tạo OAuth Client ID
  • Bước 5: viết code upload file
  • Bước 6: run code và cấp quyền cho Client ID truy cập

Bước 1: cài đặt Python 3

Trong lúc viết bài này mình đang sử dụng Python 3.7.3 x64, các bạn có thể cài phiên bản khác miễn là 3.6 trở lên.

Sau khi download về cài đặt như các chương trình bình thường rồi restart máy.

Bước 2: cài đặt thư viện pydrive

Dùng lệnh bên dưới để cài pydrive, phiên bản hiện tại là 1.3.1
pip install pydrive

Trong trường hợp cài đặt trên Linux bị lỗi vì không gỡ được httplib2 thì dùng lệnh
pip install pydrive --ignore-installed httplib2

Bước 3: cài Visual Studio Code để lập trình Python

Bạn có thể sử dụng Visual Studio Code hoặc editor khác để edit code Python. Code Python cần indent (thụt đầu dòng) chuẩn là được, Visual Code có ưu điểm là có interpreter khá xịn. Do đó mình recommend Visual Studio Code

Bước 4: tạo OAuth Client ID

Bạn cần tạo 1 project trong Google Developer Console để lấy được Client ID. Người dùng Google Drive sẽ cấp quyền cho Client ID này để đọc ghi file.

Vào Google Developer Console tạo project mới. Đặt tên cho dễ nhớ như BackupWebsiteDB chẳng hạn

Ấn nút ENABLE APIS AND SERVICES để tìm kiếm Google Drive API

Sau đó tìm Google Drive API và enable nó

Tạo Credentials mới => chọn OAuth Client ID

Chọn Desktop App vì chúng ta chạy script Python trực tiếp trên PC

Đặt tên cho app, ấn nút Create là xong. Sau khi tạo xong bạn sẽ có Client ID và Client Secret tương tự như bên dưới:
client_id: 389056109680-svtji0v994ecj0n2jnff7supfn2c1r2q.apps.googleusercontent.com
client_secret: 6COIiq7C9HeL_WmvPi5MVybz

Lưu ý: bạn phải giữ bí mật Client ID và Client Secret, đoạn ở trên chỉ là ví dụ

Bước 5: viết code upload file

Bạn cần tạo 2 file đặt cạnh nhau, trong đó 1 file code đặt tên là GoogleDrive.py và 1 file settings.yaml

File Python bạn đặt tên gì cũng được, còn file settings.yaml bắt buộc đúng tên vì pydrive sẽ đọc file này.

Nội dung file settings.yaml chứa client_idclient_secret đã lấy ở bước trên

Bạn cần lấy ID của folder Google Drive để nhúng vào code

Tiếp theo là nội dung file GoogleDrive.py, bạn cần thay ID của folder vào code bên dưới

Nếu bạn không xóa file trên Drive trước khi upload thì Drive sẽ giữ cả 2 file cùng tên

Bước 6: run code và cấp quyền cho Client ID truy cập

Khi run code lần đầu tiên thì bạn cần cấp quyền cho Client ID được phép truy cập vào Google Drive.

Sau khi cấp quyền thì script Python sẽ tạo 1 file credentials.json bên cạnh, file credentials.json chứa thông tin về token để upload file. Nếu mất file này thì bạn phải cấp quyền lại.

Nếu mọi việc trơn tru thì file sẽ upload thành công lên Google Drive.

Các lỗi thường gặp

Access blocked

Nếu bạn gặp lỗi như hình trên thì vào menu Oauth Consent screen chọn PUBLISH APP

Bonus

Code list file trong folder Google Drive, lưu ý chỉ liệt kê những file do chính bạn upload.

Ngoài ra còn nhiều example khác nữa, bài viết này chỉ tập trung vào việc upload file tự động. Chúc các bạn thành công.

6 thoughts on “Upload file lên Google Drive bằng Python

    1. File settings.yaml nằm bên cạnh file GoogleDrive.py chứ không nhúng vào

Leave a Reply