Python から GoogleDriveAPI を使って GoogleDrive にアクセスする方法をご紹介します。
手順は以下のとおりです。
- GoogleCloud プロジェクト の作成
- GoogleDriveAPI の有効化
- サービスアカウント の作成
- 鍵の取得
- GoogleDriveフォルダ の共有設定
- GoogleDriveフォルダID を調べる
- Pythonプログラム の実行
認証方法には、下の3つがあります。
資格情報の種類 | 説明 |
---|---|
APIキー | 一般公開データに匿名でアクセスを提供し、認証不要 |
OAuth クライアント ID | リクエストを送信する際にブラウザを開いてユーザー認証 |
サービスアカウント | 認証情報をJSON形式で保管し、リクエストを送信する際に認証 |
Python からユーザの手を介さずに 自動的に認証させたい ため サービスアカウント を使用します。
ではいってみましょう。
GoogleCloudプロジェクトの新規作成
1.Google Cloud プラットフォーム にアクセスします。
2.Google にログインします。

3.以下の画像の 赤枠で囲っている部分 をクリックします。

4.新しいプロジェクトをクリックします。

5.任意のプロジェクト名を入力します。
プロジェクトIDを変更したい場合は、編集から任意のプロジェクトIDに変更します。
最後に 作成 をクリックします。

6.通知が表示されるので、プロジェクトを選択をクリックします。

Google Drive API の有効化
1.左上のメニュー ⇒ “API とサービス” ⇒ “有効な API とサービス” をクリックします。

2. “API とサービスを有効にする” をクリックします。

3.“google drive api” と入力します。

4.検索結果から Google Drive API を選択し 有効にする をクリックします。

サービスアカウントの作成
1.左上のメニュー より API とサービス ⇒ 認証情報 をクリックします。

2.サービスアカウントを管理 をクリックします。

3.サービスアカウントを作成 をクリックします。

4.任意の サービスアカウント名 を入力します。
サービスアカウントID は自動で設定されます。
作成して続行 をクリックします。

5.ロールに 編集者 を選択して 続行 をクリックします。

📌どのロールを選ぶべき?
・「オーナー」 → プロジェクト全体の管理をする場合のみ(強力な権限のため注意!)
・「閲覧者」 → 設定を確認するだけなら適切
・「参照者」 → ログや監査情報の閲覧が必要な場合に使う
・「編集者」 → 設定やデータを変更するが、課金管理は不要な場合
6.この項目は 空白のまま 完了 をクリックします。

この項目の補足説明
- 「サービスアカウントユーザー」ロール → このサービスアカウントを使ってジョブや VM をデプロイできる。(代理実行が可能)
- 「サービスアカウント管理者」ロール → このサービスアカウントの設定を変更したり、新しいキーを生成できる。(管理権限)
もしロールを設定しない場合 → そのサービスアカウントを代理で使う人がいないため、自分以外はサービスアカウントを利用できません。 → ただし、サービスアカウント自体の認証情報(JSON キー)があれば、Python から Google Drive にアクセスすることはできます。
まとめ
- Python から Google Drive にアクセスするだけなら、この項目を空白にしても問題なし。
- 他のユーザーやシステムとサービスアカウントを共有するなら、ロールを設定して権限を管理する必要あり。
鍵の取得
1.右の ︙ から 鍵を管理 をクリックします。

2.キーを追加 ⇒ 新しい鍵を作成 をクリックします。

3.JSON形式であることを確認し 作成 をクリックします。

4.閉じる をクリックします。

鍵の移動
1.秘密鍵 *****.json ファイル を Cドライブ直下に移動します。

GoogleDriveフォルダの共有設定
1.GoogleDrive にアクセスします。
2.マイドライブ ⇒ Python からアクセスしたいフォルダの ︙ をクリック
⇒ 共有 ⇒ 共有 をクリックします。

3.赤枠の欄に サービスアカウント の メールアドレス を入力し 完了 をクリックします。

4.編集者 であることを確認し 送信 をクリックします。

GoogleDrive フォルダID を調べる
1.先ほど共有設定したフォルダを開き URL の最後の部分をコピーします。

Python プログラムの実行
1.ライブラリのインストール
1 |
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client |
2.Pythonプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
from google.oauth2 import service_account from googleapiclient.discovery import build # 認証情報のセットアップ SCOPES = ["https://www.googleapis.com/auth/drive"] # ここに Cドライブ に移動した JSONファイル名 を入れてください SERVICE_ACCOUNT_FILE = r"c:\******************.json" creds = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) # Google Drive APIの初期化 drive_service = build("drive", "v3", credentials=creds) # アクセスするフォルダIDを設定 FOLDER_ID = "ここにコピーしたフォルダIDを入れてください" # フォルダ内のファイル一覧を取得 query = f"'{FOLDER_ID}' in parents" results = drive_service.files().list(q=query, fields="files(id, name)").execute() files = results.get("files", []) if not files: print("Google Driveにファイルが見つかりませんでした。") else: print("Google Driveのファイル一覧:") for file in files: print(f"{file['name']} ({file['id']})") |
プログラムの解説
🔹 1. 必要なライブラリのインポート
まず、Google の API を利用するために以下のライブラリをインポートしています:
1 2 |
from google.oauth2 import service_account from googleapiclient.discovery import build |
google.oauth2.service_account
→ サービスアカウントを使った認証を処理するgoogleapiclient.discovery
→ Google の API(Drive API など)に接続する
🔹 2. 認証情報のセットアップ
次に、Google Drive API にアクセスするために、サービスアカウントの認証情報を設定します。
1 2 3 |
SCOPES = ["https://www.googleapis.com/auth/drive"] # ここに Cドライブ に移動した JSONファイル名 を入れてください SERVICE_ACCOUNT_FILE = r"c:\***************************.json" |
- SCOPES → Google Drive にアクセスするための権限(
https://www.googleapis.com/auth/drive
) - SERVICE_ACCOUNT_FILE → 事前にダウンロードした サービスアカウントの認証キー(JSONファイル) のパス
この JSON ファイルには、API を実行するための秘密鍵 が含まれているので、第三者に共有しないよう注意しましょう。
🔹 3. 認証情報を使用して API に接続
1 2 3 4 |
creds = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES ) drive_service = build("drive", "v3", credentials=creds) |
Credentials.from_service_account_file()
→ JSONファイルを使って、Google Drive API の認証をセットアップbuild("drive", "v3", credentials=creds)
→ Drive API(バージョン3)を使用するためのオブジェクトを作成
これで、Google Drive API への接続が完了しました。
🔹 4. フォルダ内のファイル一覧を取得
1 2 3 4 5 |
FOLDER_ID = "ここにコピーしたフォルダIDを入れてください" query = f"'{FOLDER_ID}' in parents" results = drive_service.files().list(q=query, fields="files(id, name)").execute() files = results.get("files", []) |
- FOLDER_ID → アクセスしたいフォルダの ID(Google Drive の URL から取得可能)
- クエリ (
query
) →"FOLDER_ID in parents"
という条件で、指定フォルダ内のファイルを取得 files().list()
→ クエリに該当するファイル一覧を取得し、id
とname
を取得
🔹 5. ファイルがあるかチェック & 表示
最後に、取得したファイル一覧を表示します:
1 2 3 4 5 6 7 |
if not files: print("Google Driveにファイルが見つかりませんでした。") else: print("Google Driveのファイル一覧:") for file in files: print(f"{file['name']} ({file['id']})") |
- ファイルが無ければ「見つかりません」と表示
- ファイルがあれば、名前と ID を出力
このコードを実行すると、Google Drive のフォルダ内にあるファイルの一覧がコンソールに表示されます!
実行結果
実行すると Python のターミナル にGoogleDrive の ファイル一覧 が表示されました!

ファイルをダウンロードする
1.ライブラリのインストール
1 |
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client |
2.Pythonプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
from google.oauth2 import service_account from googleapiclient.discovery import build import io from googleapiclient.http import MediaIoBaseDownload # 認証情報のセットアップ SCOPES = ["https://www.googleapis.com/auth/drive"] SERVICE_ACCOUNT_FILE = r"c:\*****************.json" # ダウンロードしたJSONファイルのパス creds = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) # Google Drive APIの初期化 drive_service = build("drive", "v3", credentials=creds) # ダウンロードするファイルの ID(Google Drive の URL から取得) FILE_ID = "ファイルID" FILE_NAME = "downloaded_file.ext" # 保存するファイル名 # ファイルのダウンロード処理 request = drive_service.files().get_media(fileId=FILE_ID) file = io.BytesIO() downloader = MediaIoBaseDownload(file, request) done = False while not done: _, done = downloader.next_chunk() # ダウンロードしたデータをローカルファイルとして保存 with open(FILE_NAME, "wb") as f: f.write(file.getvalue()) print(f"{FILE_NAME} をダウンロードしました!") |
📌 プログラムの解説
💡 このコードの流れ 1️⃣ FILE_ID
を指定して Google Drive API にダウンロードリクエスト 2️⃣ ファイルのデータを取得し、MediaIoBaseDownload
で分割ダウンロード 3️⃣ ダウンロードデータを BytesIO
に格納し、ローカルファイルとして保存
おわりに
今回は GoogleDriveAPI をPython で実行し GoogleDrive のファイル を取得する方法をご紹介しました。
GoogleDriveAPI の有効化 や サービスアカウント の取得など、かなり大変でしたがいかがでしたでしょうか。
今回の方法を応用すれば プログラム がデータを GoogleDrive に保存したり GoogleDrive のデータを加工することができるようになりますね!
ぜひご活用ください。
ではまた。
・以下の記事を参考にさせて頂きました。


コメント