Google Drive API で共有ドライブのデータをとってくる (w/REST API)

やりたいこと

Google の client library を使わずシンプル REST API で共有ドライブのメタデータをとってきたい

実装

さっそく結論からいくと、ここを叩けば OK

https://www.googleapis.com/drive/v3/files?driveId=xxx&includeItemsFromAllDrives=true&corpora=drive&supportsAllDrives=true&fields=nextPageToken, files(id,name,mimeType)

変更する点は

  • driveId=xxx の xxx を、対象の共有ドライブの ID (URL のパスにあるやつ) を設定するのと、
  • files(id,name,...) に、必要なフィールドを適宜追加する

の2つ

ほかのクエリパラメータは、 driveId を指定した場合、

  • includeItemsFromAllDrives=true
  • corpora=drive
  • suppportsAllDrives=true

をセットで指定してあげないと 403 エラーが返ってくる (「driveId 使うならに設定してね」的なやつ)

権限

OAuth scope はメタデータをとってくるだけなら

https://www.googleapis.com/auth/drive.metadata.readonly

だけで OK。逆に、 https://www.googleapis.com/auth/drive.files だとメタデータはとれないし、403 とかではなく空のレスポンスが返ってくる (わかりにくい)。

認証まわりの話

試した限り API key だと共有ドライブのデータがとってこれなかったので、 OAuth 2.0 を使うことにした。

手順:

  1. (なければ) OAuth consent screen を作る
  2. OAuth Client をつくる
  3. OAuth 2.0 Playground などで refresh token と access token を取得
  4. リクエストの Authorization ヘッダーに Bearer <access_token> を設定する

開発 tips

Drive API まわりは自分には鬼ほどわかりにくくて、以下参考にしたリソース。

"Retrieve a list of thumbnails" というタイトルだけど、メタデータをとってくるサンプルコードになっている


  • OAuth 2.0 のリクエストをどうやるかわかる
  • こんな感じ↓で request/response が生で見れるので、どの URL を叩いたらいいか、とかもわかる
  • 自分の client ID/client secret を使うこともできる
    • 今回はアプリケーションじゃなくて no-code tool 用のもろもろを発行したかったので助かった
    • OAuth Client の Authorized redirect URIhttps://developers.google.com/oauthplayground に設定する必要あり


files.list エンドポイントのレファレンス


files リソースのレファレンス