🌐

PythonでGoogle Driveのファイルを操作する(事前準備編)

2022/07/08に公開1

Pythonを用いてGoogle Drive内のファイルをダウンロードするなどの処理を実装する際、以下2つのデータが必要となります。

  • client_secret.json
  • token.pickle
    本記事では、上記2つのデータを取得する方法を解説します。

Pythonを用いてGoogle Driveのファイルを操作するプログラムについては、後日公開予定です。

client_secret.jsonの取得

Google Cloud Platformにアクセス

Google Cloud Platformにアクセスします。
https://console.cloud.google.com/apis/dashboard

プロジェクトの選択

添付画像赤枠の部分をクリックします。初めて作成される方は「プロジェクトの選択」となっている可能性があります。

プロジェクト作成

任意のプロジェクト名を入力し、作成ボタンをクリックします。

作成したプロジェクトの選択

再度添付画像赤枠の部分をクリックします。

作成したプロジェクトをクリックします。

Google Drive APIの有効化

ライブラリをクリックします。


検索窓に「google drive」と入力し、検索候補で出てくる「google drive api」をクリックします。

Google Drive APIをクリックします。

有効にするをクリックします。

OAuthクライアントID

認証情報 > 認証情報を作成 > OAuthクライアントIDをクリックします。

同意画面を設定をクリックします。

外部を選択し作成をクリックします。

OAuth同意画面

入力が必須であるアプリ名、ユーザーサポートメール、デベロッパーの連絡先情報 > メールアドレスの3つのデータを入力します。入力後、保存して次へをクリックします。

スコープ

保存して次へをクリックします。

テストユーザー

保存して次へをクリックします。

概要

内容を確認し、ダッシュボードに戻るをクリックします。

遷移後のページにてアプリを公開をクリックします。

確認をクリックします。

OAuthクライアントIDの作成

認証情報 > 認証情報を作成 > OAuthクライアントIDをクリックします。

アプリケーションの種類の選択、名前を入力した後、作成をクリックします。

ポップアップ画面のJSONをダウンロードをクリックします。クリック後、「client_secret_xxxx.json」がダウンロードされます。これが本記事におけるclient_secret.jsonにあたります。

token.pickleの取得

ライブラリのインストール

pip install google-api-python-client
pip install google-auth-httplib2
pip install google-auth-oauthlib

token.pickleを発行するプログラムの実行

プログラム実行前にclient_secret_xxxx.jsonをclient_secret.jsonと名前を変更した状態で以下のプログラムを実行します。実行後token.pickleが発行されます。

import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

SCOPES = ['https://www.googleapis.com/auth/drive']

def main():
    # OAuth
    drive = None
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)

    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        elif os.path.exists('client_secret.json'):
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secret.json', SCOPES)
            creds = flow.run_local_server(port=0)
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    if creds and creds.valid:
        drive = build('drive', 'v3', credentials=creds)
    if not drive: print('Drive auth failed.')

if __name__ == '__main__':
    main()

以上で以下2データの取得は完了です。

  • client_secret.json
  • token.pickle
    Pythonを用いてGoogle Driveのファイルを操作するプログラムについては、後日公開予定です。

Discussion