GoogleドライブをPythonから操作する方法を解説していきます。
これができれば、いろいろと可能性は広がります。
そして、それを実現するためにPyDriveが役に立ちます。
本記事の内容
- PyDriveとは?
- PyDriveのシステム要件
- PyDriveのインストール
- Googleの認証
- PyDriveの動作確認
それでは、上記に沿って解説していきます。
PyDriveとは?
PythonからGoogle APIを利用する場合、google-api-python-clientを用います。
google-api-python-clientは、Googleが用意してくれているライブラリです。
それは、大変ありがたいことです。
ところが、「google-api-python-clientは使い勝手が悪い」と考える人が出てきます。
そのような人たちが、google-api-python-clientを扱い易いようにと頑張ります。
その結果、開発されたのがPyDriveになります。
PyDriveは、 Google Drive APIへの操作部分に特化したラッパーライブラリです。
そのため、PyDriveにはgoogle-api-python-clientが含まれています。
PyDriveをインストールしたら、google-api-python-clientも一緒についてきます。
以上、PyDriveについての説明でした。
次は、PyDriveのシステム要件を確認します。
PyDriveのシステム要件
現時点(2021年4月)でのPyDriveの最新バージョンは、1.3.1となります。
この最新バージョンは、2016年10月25日にリリースされています。
かなり古いです。
でも、ちゃんと動きます。
PyDriveは、google-api-python-clientのラッパーです。
したがって、google-api-python-clientのシステム要件を見る方が適切かもしれません。
ここからは、google-api-python-clientのシステム要件を見ていきます。
現時点(2021年4月)でgoogle-api-python-clientは、2.1.0が最新です。
このバージョンは、2021年4月1日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
そして、サポート対象となるPythonのバージョンは以下。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
さすが、Googleが開発しているだけあります。
ちゃんとPythonの公式開発サイクルに準じています。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
よって、Pythonのバージョンにさえ注意すれば問題なさそうです。
なお、私は現時点では最新のバージョンで検証しています。
>python -V Python 3.9.4
以上、PyDriveのシステム要件の説明でした。
次は、PyDriveのインストールしていきます。
PyDriveのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 54.2.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、PyDriveのインストールです。
PyDriveのインストールは、以下のコマンドとなります。
pip install PyDrive
インストールには、そこそこ時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ------------------------ --------- cachetools 4.2.1 certifi 2020.12.5 chardet 4.0.0 google-api-core 1.26.3 google-api-python-client 2.1.0 google-auth 1.28.0 google-auth-httplib2 0.1.0 googleapis-common-protos 1.53.0 httplib2 0.19.1 idna 2.10 oauth2client 4.1.3 packaging 20.9 pip 21.0.1 protobuf 3.15.7 pyasn1 0.4.8 pyasn1-modules 0.2.8 PyDrive 1.3.1 pyparsing 2.4.7 pytz 2021.1 PyYAML 5.4.1 requests 2.25.1 rsa 4.7.2 setuptools 54.2.0 six 1.15.0 uritemplate 3.0.1 urllib3 1.26.4
たくさんのパッケージが、インストールされました。
最新バージョンのgoogle-api-python-clientが、インストールされています。
以上、PyDriveのインストールの説明でした。
次は、Googleの認証に関して解説します。
Googleの認証
PyDriveの動作確認を行うためには、Googleの認証をクリアしておく必要があります。
この部分については、次の記事で詳しく解説しています。
上記記事の「Googleの認証」部分を参考にしてください。
ただ、APIの有効化については「Google Drive API」だけでOKです。
あと、「サービスアカウントへのアクセス権の付与」はGoogleドライブで行わないと意味がありません。
これは、以下で説明します。
サービスアカウントへのアクセス権の付与
Googleドライブへアクセスします。
マイドライブに「PyDrive」フォルダを作成しましょう。
この「PyDrive」フォルダを共有します。
共有先は、上記記事内のサービスアカウントを利用します。
つまり、同じservice_account.jsonを利用することになります。
そして、「client_email」の値を共有先のメールアドレスとします。
「送信」すると、「PyDrive」フォルダが共有されます。
共有されたフォルダには、以下のようなアイコンが付きます。
あと、この共有フォルダのIDを取得しておきます。
「リンクを取得」をクリック。
次のポップアップが表示されます。
「リンクをコピー」をクリックすると、次のようなURLを取得できます。
Google Drive: Sign-inAccess Google Drive with a Google account (for personal use) or Google Workspace account (for business use).
上記URLの「1MqXJ_Gqf1jbHVqxSKqvkZSGQ1eHiBiPc」が、フォルダのIDとなります。
このIDは、動作確認の際に利用します。
以上、サービスアカウントへのアクセス権の付与が完了です。
では、PyDriveの動作確認を行いましょう。
PyDriveの動作確認
「PyDrive」フォルダに新規でファイルを作成してみましょう。
もちろん、PyDriveを利用してPythonからです。
そのサンプルコードは、以下。
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from oauth2client.service_account import ServiceAccountCredentials JSON_FILE = "service_account.json" ID = "1MqXJ_Gqf1jbHVqxSKqvkZSGQ1eHiBiPc" gauth = GoogleAuth() scope = ["https://www.googleapis.com/auth/drive"] gauth.credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_FILE, scope) drive = GoogleDrive(gauth) file = drive.CreateFile({"title": "test.txt", "parents": [{"id": ID}]}) file.SetContentString("テスト") file.Upload()
上記を実行すると、test.txtがGoogleドライブに新規で作成されます。
test.txtファイルの内容は、「テスト」となっています。
プログラムは見れば、わかる程度の内容です。
以下については、説明しておきます。
JSON_FILE = "service_account.json" ID = "1MqXJ_Gqf1jbHVqxSKqvkZSGQ1eHiBiPc"
JSON_FILEの値は、service_account.jsonのパスを設定します。
IDの値は、フォルダのIDを設定します。
以上、PyDriveの動作確認の説明でした。