Google Drive APIを使用することで、Google ColabからDriveのファイルやフォルダに直接アクセスすることができます。
この記事では、その手順を詳しく解説します。
Google Drive APIを使用する方法
1. Google Cloud Consoleにアクセスして、新しいプロジェクトを作成
Google Cloud Consoleにアクセスします。
プロジェクトのドロップダウンメニューをクリックし、「新しいプロジェクト」を選択します。
プロジェクト名を入力し、プロジェクトを作成します。
2. Google Drive APIを有効にする
左側のナビゲーションメニューから「APIとサービス」>「ライブラリ」を選択します。
「Google Drive API」を検索し、選択します。
「有効にする」ボタンをクリックします。
3. 認証情報を作成する
左側のナビゲーションメニューから「APIとサービス」>「認証情報」を選択します。
「認証情報を作成」ボタンをクリックし、OAuth 2.0 クライアント ID を作成します。
アプリケーションのタイプとして「その他」を選択し、認証情報をダウンロードします。
4. JSONキーをダウンロードする
「認証情報」ページに戻り、作成したサービス アカウントをクリックします。
「キー」タブをクリックし、「キーを追加」>「JSON」を選択します。
JSONキーがダウンロードされます。このキーは、後でColabからDriveにアクセスする際に使用します。
5. ColabでGoogle Drive APIを使用する
Google Drive上で「OAuth」という名前のフォルダを作成し、その中に
先ほどダウンロードしたJSONキーをアップロードします。
Google ColabでこのJSONファイルを使用する際には、Google Driveをマウントして、該当のフォルダからファイルを読み込むことができます。
Service Accountを使用する方法
OAuth 2.0 クライアント ID の認証情報ファイルには、
refresh_token、client_id、およびclient_secretの情報が不足しているようです。
この問題を解決するために、Service Accountを使用する方法をご紹介します。
1. Google Cloud Consoleにアクセスして、先ほど作成したプロジェクトを選択します。
2. 左側のナビゲーションメニューから「IAM & 管理」>「サービス アカウント」を選択します。
3. 「サービス アカウントを作成」ボタンをクリックします。
4. サービスアカウントの名前と説明を入力し、次に進みます。
5. 必要な役割を選択せずに次に進みます。
6. 「完了」をクリックしてサービスアカウントを作成します。
7. 作成したサービスアカウントの行をクリックして詳細ページに移動します。
8. 「キー」タブをクリックし、「キーを追加」>「JSON」を選択して、JSONキーをダウンロードします。
9. このJSONキーをGoogle Drive上の「OAuth」フォルダにアップロードします。
Service AccountはデフォルトでGoogle Driveのファイルやフォルダにアクセスできません。
Service Accountのメールアドレスは、project-************.jsonの中に"client_email"として記載されています。
続いて、このメールアドレスを使用して、Google Driveの共有設定でアクセス権限を付与する手順を解説します。
1. Google Driveを開き、アクセスを許可したいフォルダやファイルを右クリックします。
2. 「共有」を選択します。
3. 「リンクを知っているインターネット上の誰もが閲覧できます」の部分をクリックして、共有設定を変更します。
4. 「ユーザーやグループを追加」のinput部分に、Service Accountのclient_email(project-*****@project-*****.iam.gserviceaccount.com 等)を入力します。
5. 権限を「編集者」や「閲覧者」など、適切なものに設定します。
6. 変更を保存します。
これにより、Service Accountは指定したフォルダやファイルにアクセスできるようになります。
例として、以下のコードを使用して、
Google Driveのルートディレクトリのファイルとフォルダを一覧表示します:
# Google Driveをマウント
from google.colab import drive
drive.mount('/content/drive')
from google.oauth2.service_account import Credentials
import googleapiclient.discovery
# JSONキーのパスを指定
credential_path = "/content/drive/MyDrive/OAuth/json_key.json" #@param {type:"string"}
# Service Accountの認証情報を使用してDrive APIのサービスを作成
creds = Credentials.from_service_account_file(credential_path, scopes=["https://www.googleapis.com/auth/drive"])
drive_service = googleapiclient.discovery.build('drive', 'v3', credentials=creds)
# 例: Google Driveのルートディレクトリのファイルとフォルダを一覧表示
results = drive_service.files().list(pageSize=10, fields="nextPageToken, files(id, name)").execute()
items = results.get('files', [])
for item in items:
print(f"{item['name']} (folder_id: {item['id']})")
この手順に従えば、Google ColabからGoogle Driveのファイルやフォルダにアクセスすることができます。