PythonとGoogleのAPIを使って、Google Driveにアクセスします。
環境
- Windows10
- Python
3.8.6
環境構築
Python標準のvenvを使って仮想環境を構築し、そこに必要なパッケージをインストールしました。
$ cd "~/Google Drive Viewer"
$ python -m venv .venv
$ source .venv/Scripts/activate
(.venv) $ python -m pip install --upgrade pip
(.venv) $ pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
GCPプロジェクトの作成と認証情報のダウンロード
Google Developer Consoleでプロジェクトを作成して、認証情報をclient_id.json
としてダウンロードしてください。
Pythonスクリプト
公式チュートリアルを参考にPythonスクリプトを書きます。
from __future__ import print_function
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 = [
# Google Driveの全ファイル読み込み専用
'https://www.googleapis.com/auth/drive.readonly'
]
credentials = None
# 認証トークンがあれば読み込む
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
credentials = pickle.load(token)
# 認証情報が有効でなければGoogleのログイン画面を開いて新たに生成
if not credentials or not credentials.valid:
if credentials and credentials.expired and credentials.refresh_token:
credentials.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'client_id.json', SCOPES)
credentials = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(credentials, token)
# Google Drive API v3のオブジェクトを生成
service = build('drive', 'v3', credentials=credentials)
# APIを使う(ファイルの一覧を10件取得)
results = service.files().list(
pageSize=10, fields="nextPageToken, files(id, name)").execute()
items = results.get('files', [])
# 結果を表示
if not items:
print('No files found.')
else:
print('Files:')
for item in items:
print(u'{0} ({1})'.format(item['name'], item['id']))
実行
実行時に有効なユーザーの認証情報がtoken.pickle
に保存されていない場合は、Googleのアプリ認証ページがブラウザで開かれます。
もしくは、以下のような形でアプリ認証ページのURLがターミナルに表示されます。
# 実行
(.venv) $ python main.py
# 表示されたURLで自分のGoogleアカウントにログインする
Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=...
Googleによって確認されていないアプリの場合は警告が出ます。
詳細からアプリのページに移動します。
必要な権限(プログラムではSCOPES
で指定)が表示されるので、許可を選びます。
画面が自動的に閉じて、ユーザーの認証情報がtoken.pickle
に保存されます。
例のプログラムではGoogle Driveのファイルの一覧を10件取得して表示するので、
この後ターミナルにファイルの一覧が表示されます。