【Python】GoogleDriveAPIをつかってGoogleDriveにアクセスする方法

Python

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.ライブラリのインストール

2.Pythonプログラム

プログラムの解説

🔹 1. 必要なライブラリのインポート

まず、Google の API を利用するために以下のライブラリをインポートしています:

  • google.oauth2.service_account → サービスアカウントを使った認証を処理する
  • googleapiclient.discovery → Google の API(Drive API など)に接続する

🔹 2. 認証情報のセットアップ

次に、Google Drive API にアクセスするために、サービスアカウントの認証情報を設定します。

  • SCOPES → Google Drive にアクセスするための権限(https://www.googleapis.com/auth/drive
  • SERVICE_ACCOUNT_FILE → 事前にダウンロードした サービスアカウントの認証キー(JSONファイル) のパス

この JSON ファイルには、API を実行するための秘密鍵 が含まれているので、第三者に共有しないよう注意しましょう。

🔹 3. 認証情報を使用して API に接続

  • Credentials.from_service_account_file() → JSONファイルを使って、Google Drive API の認証をセットアップ
  • build("drive", "v3", credentials=creds) → Drive API(バージョン3)を使用するためのオブジェクトを作成

これで、Google Drive API への接続が完了しました。

🔹 4. フォルダ内のファイル一覧を取得

  • FOLDER_ID → アクセスしたいフォルダの ID(Google Drive の URL から取得可能)
  • クエリ (query)"FOLDER_ID in parents" という条件で、指定フォルダ内のファイルを取得
  • files().list() → クエリに該当するファイル一覧を取得し、idname を取得

🔹 5. ファイルがあるかチェック & 表示

最後に、取得したファイル一覧を表示します:

  • ファイルが無ければ「見つかりません」と表示
  • ファイルがあれば、名前と ID を出力

このコードを実行すると、Google Drive のフォルダ内にあるファイルの一覧がコンソールに表示されます!

実行結果

実行すると Python のターミナル にGoogleDrive の ファイル一覧 が表示されました!

ファイルをダウンロードする

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

2.Pythonプログラム

📌 プログラムの解説

💡 このコードの流れ 1️⃣ FILE_ID を指定して Google Drive API にダウンロードリクエスト 2️⃣ ファイルのデータを取得し、MediaIoBaseDownload で分割ダウンロード 3️⃣ ダウンロードデータを BytesIO に格納し、ローカルファイルとして保存

おわりに

今回は GoogleDriveAPI をPython で実行し GoogleDrive のファイル を取得する方法をご紹介しました。

GoogleDriveAPI の有効化 や サービスアカウント の取得など、かなり大変でしたがいかがでしたでしょうか。

今回の方法を応用すれば プログラム がデータを GoogleDrive に保存したり GoogleDrive のデータを加工することができるようになりますね!

ぜひご活用ください。

ではまた。

・以下の記事を参考にさせて頂きました。

PythonでGoogle Drive APIを使う
【Python】PythonでGoogle Driveにアクセスしてみる【Drive API】 - Qiita
はじめにGoogle Drive APIを用いて、PythonからGoogel Driveにアクセスする手順を紹介していきます。公式が用意してくれているクイックスタートが大変わかりやすいため、特…

コメント