LoginSignup
6

More than 1 year has passed since last update.

PythonでGoogle Driveを操作する。

Last updated at Posted at 2022-03-02

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操作の権限認可を行っている。
スクリーンショット 2022-03-02 16.05.53.png

1.1 Google Drive APIの有効化

  1. Google Cloud Platformを開く。
  2. プロジェクトの選択 -> 新しいプロジェクトを選択する。
  3. プロジェクト名を入力し、作成をクリックする。
    tempsnip.png
  4. ライブラリ-> Google Drive APIを選択し、「有効にする」をクリック。

1.2 OAuth認証アプリの設定

1.2.1 OAuth認証画面の作成

  1. OAuth同意認証 -> User Type 外部 を選択。
    キャプチャ.PNG
  2. アプリ名とユーザーサポートメール、ディベロッパーの連絡先情報を入力し、保存して次へを選択。
  3. スコープは何も選択せず、保存して次へを選択。
  4. テストユーザーも何も選択せず、保存して次へを選択。

1.2.2 認証情報の作成

  1. APIとサービス -> 認証情報 ->上部にある+認証情報を作成 -> OAuth クライアント ID を選択。
  2. アプリケーションの種類 デスクトップアプリ -> 名前 を入力し、作成を選択。
     ※クライアントID、クライアントシークレットをメモしておく。
  3. JSONをダウンロードする。

1.2.3 アプリの公開

  1. 再びOAuth同意画面に移動し、「アプリを公開」を選択。

2. プログラムの作成とGoogle Driveの操作

2.1.1 yamlの設定

  1. yamlファイルを作成する。ここでは、上記で作成したOAuth認証アプリへのアクセスと1回目のプログラムを走行させたときに、credentials.jsonというファイルを生成させるための設定をしている。このファイルを生成することで、2回目以降の認証画面の省略ができる。上記で取得した、クライアントID、クライアントシークレットを入力する。
settings.yaml
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上に新規フォルダの作成をしている。)

create_folder.py
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プログラムの実行

  1. 上記で作成したthonsettings.yamlとcreate_folder.pyを同じディレクトリに置き、プログラムを実行する。

  2. webサーバー上に認証画面が出てくる。作成したアプリがアクセスを求めてくるので、チェックを入れ、続行を選択する。
     - 4の操作は、一度だけ行う。実行後、credentials.jsonというファイルが生成、省略できる。
     - webサーバー上は、The authentication flow has completed.と表示される。
     - google driveには、new_folderという名前のフォルダが作られる。
    キャプチャ.PNG

link

今回参照したリンク。
OAuth認証
Python, PyDriveでGoogle Driveのダウンロード、アップロード、削除など

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6