pythonを実行し、Google Driveにファイルをアップロードする方法を試してみた。
環境
Python version:3.9.7
OS: windows 10.0
Anaconda:conda 4.11.0
Google Cloud Platformについて
今回、 Google Cloud Platformを使用する。Google Cloud Platform(GCP)とは、Google がクラウド上で提供するサービスの総称で、その中にあるGoogle Drive APIを利用し、Google Driveを操作する。
プログラムの実行イメージ
自分のPCで実行するプログラムからgoogle driveまでに行われるイメージをまとめてみた。
Google Driveを操作するには、Google Cloud Platform(GCP)上にプロジェクトを作成し、Google Drive APIの有効化、OAuth認証アプリの設定をする必要がある。この設定を行うと、クライアントIDが発行される。
今回試したプログラムは、setting.yamlにそのIDを記述してpython実行することで、アプリにアクセスできるようになる。このアプリを経由して、Google Driveを操作する。
※OAuth認証とは、Google Cloud PlatformにあるAPIを使い、google driveを操作するためのアクセストークンを発行することで、google drive操作の権限認可を行っている。
1.1 Google Drive APIの有効化
- Google Cloud Platformを開く。
- プロジェクトの選択 -> 新しいプロジェクトを選択する。
- プロジェクト名を入力し、作成をクリックする。
- ライブラリ-> Google Drive APIを選択し、「有効にする」をクリック。
1.2 OAuth認証アプリの設定
1.2.1 OAuth認証画面の作成
- OAuth同意認証 -> User Type 外部 を選択。
- アプリ名とユーザーサポートメール、ディベロッパーの連絡先情報を入力し、保存して次へを選択。
- スコープは何も選択せず、保存して次へを選択。
- テストユーザーも何も選択せず、保存して次へを選択。
1.2.2 認証情報の作成
- APIとサービス -> 認証情報 ->上部にある+認証情報を作成 -> OAuth クライアント ID を選択。
- アプリケーションの種類 デスクトップアプリ -> 名前 を入力し、作成を選択。
※クライアントID、クライアントシークレットをメモしておく。 - JSONをダウンロードする。
1.2.3 アプリの公開
- 再びOAuth同意画面に移動し、「アプリを公開」を選択。
2. プログラムの作成とGoogle Driveの操作
2.1.1 yamlの設定
- yamlファイルを作成する。ここでは、上記で作成したOAuth認証アプリへのアクセスと1回目のプログラムを走行させたときに、credentials.jsonというファイルを生成させるための設定をしている。このファイルを生成することで、2回目以降の認証画面の省略ができる。上記で取得した、クライアントID、クライアントシークレットを入力する。
client_config_backend: settings
client_config:
client_id: <クライアントID>
client_secret: <クライアントシークレット>
save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json
get_refresh_token: True
oauth_scope:
- https://www.googleapis.com/auth/drive.file
- https://www.googleapis.com/auth/drive.install
2.1.2 pythonプログラムの作成
pydriveをインストールし、下記のようにpythonのプログラムを作成する。
(このプログラムは、Google drive上に新規フォルダの作成をしている。)
import pprint
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
#Googleサービスの認証
gauth = GoogleAuth()
#ユーザーから認証コードを自動的に受信しローカルWebサーバーを設定
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
#フォルダの作成
f_folder = drive.CreateFile({'title': 'new_folder',
'mimeType': 'application/vnd.google-apps.folder'})
#作成したフォルダの情報を表示
print(f_folder)
#フォルダのアップロード(google driveの最上位のディレクトリにファイルが置かれます。)
f_folder.Upload()
2.1.3 pythonプログラムの実行
-
上記で作成したthonsettings.yamlとcreate_folder.pyを同じディレクトリに置き、プログラムを実行する。
-
webサーバー上に認証画面が出てくる。作成したアプリがアクセスを求めてくるので、チェックを入れ、続行を選択する。
- 4の操作は、一度だけ行う。実行後、credentials.jsonというファイルが生成、省略できる。
- webサーバー上は、The authentication flow has completed.と表示される。
- google driveには、new_folderという名前のフォルダが作られる。
link
今回参照したリンク。
OAuth認証
Python, PyDriveでGoogle Driveのダウンロード、アップロード、削除など