PyDriveによりPythonからGoogleドライブを操作する【OAuth使わず】

PyDriveによりPythonからGoogleドライブを操作する【OAuth使わず】 プログラミング

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.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年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-in
Access 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の動作確認の説明でした。

タイトルとURLをコピーしました