☁️

PythonでGoogle Driveの自分のファイルを操作する方法

2022/02/05に公開

Google DriveのファイルをPythonで操作したい

ふとGoogle DriveのファイルをPythonでダウンロードしてあれこれしたくなりました。

ちょっと手間だったので、手順をメモしておきます。

PyDrive2というライブラリを使用しました。

事前準備

Google API有効化

Google APIを有効化しておく必要があります。

公式のマニュアルは以下です。
https://developers.google.com/workspace/guides/create-project

日本語だと以下がわかりやすいです(スクリーンショット等あるため、公式よりわかりやすい)。
https://takake-blog.com/python-driveapi/

私は、後で以下の403エラーになってハマってしまいました。

原因はユーザーを追加していなかったからでした。自分のGoogleアカウントをユーザーとして追加したら解決しました。

PyDrive2インストール

以下コマンドでインストールできます。

$ python3 -m pip install --upgrade pip
$ python3 -m pip install PyDrive2

Google Driveへのアクセス

PyDrive2のサンプルコードを実行します。

from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

実行して、ブラウザが自動で開いて、Google Driveへのアクセスを許可する画面が出ます。

自分のユーザー名を選択すると、Google Driveにアクセスできるようになります。

具体的な操作

PyDrive2のドキュメントを見ていきましょう。

https://docs.iterative.ai/PyDrive2/

便利そうな操作があったらメモしていきます。

ルートディレクトリのファイル・ディレクトリを取得

以下コードで実現できます。

from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

file_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()
for file1 in file_list:
    print('title: %s, id: %s' % (file1['title'], file1['id']))

特定のディレクトリ以下のファイルをすべてダウンロード

以下記事が参考になります。ディレクトリのIDは、上記の「ルートディレクトリのファイル・ディレクトリを取得」で取得しましょう。

https://qiita.com/i8b4/items/322dc8d81427717a86e4

まとめ

Google Driveを自由自在!と思ったのですが、自分がやりたかった狙ったファイルをダウンロードするという用途にはあんまり適していないかも…どうしたものか。

参考リンク

https://note.nkmk.me/python-pydrive-download-upload-delete/

https://developers.google.com/drive/api/v3/quickstart/python

https://udon.little-pear.net/python-google-drive-api/

https://github.com/iterative/PyDrive2

変更履歴

  • 2022/02/06 操作に関して追記

Discussion