Google Drive API – 共有ドライブを操作する方法
以前、ドライブハックで共有ドライブの解説記事を公開しましたが、この記事についてはあくまで「共有ドライブとは何か?」を説明した座学的な記事でした。今回はその続編として「共有ドライブを Google ドライブAPIで操作する方法」について解説します。少し技術的な内容になりますが、APIで何ができて何ができないのかを理解することは共有ドライブの仕様を理解するのに役立ちます。
是非最後まで記事を読んでみてください!
Google ドライブAPIの利用料金
Google ドライブAPIでは、利用量に対して課金が発生することはありません。ただし、APIの実行回数等に制限が存在しますので、その制限に対してプログラム上で対応を行う必要はあります。 Google ドライブAPIの制限についてはコチラをご参考ください。
Google ドライブAPIのアクセス制御
Google ドライブ APIで共有ドライブ等のリソースにアクセスする場合、ユーザーから認可の移譲を受けるパターン(OAuth)と、権限移譲なしでリソースにアクセスするパターンが存在します。本記事では Google APIの認証については主題ではないため、説明を割愛します。Google APIの認証について詳しく知りたい方はコチラをご参考ください。
Google ドライブAPIの対応バージョン
Google ドライブには2つのAPIバージョンが存在し、どちらも共有ドライブに対応しています。v2はいずれ廃止になると思われますので、基本的にはv3を選択することをオススメします。
バージョン | 概要URL |
---|---|
v2 | https://developers.google.com/drive/api/v2/reference/drives |
v3 | https://developers.google.com/drive/api/v3/reference/drives |
API操作対象のリソース: Drives
共有ドライブAPIで操作する対象のリソースが「Drives」です。このDrivesが共有ドライブを表すリソースになります(Drivesリソースの詳細についてはコチラの Google 公式ページが参考になります)。Drivesの主なプロパティについては以下の通りです。共有ドライブAPIでは、このDrivesリソースを操作することになります。
プロパティ | 説明 |
---|---|
id | 共有ドライブを識別するためのIDです。共有ドライブのURLの<共有ドライブID>に該当する部分です。 https://drive.google.com/drive/folders/<共有ドライブID> |
name | 共有ドライブの名称です。 |
backgroundImageFile | 共有ドライブの背景画像を設定するためのオブジェクトです。対象の共有ドライブの背景画像を設定することができます。backgroundImageLinkよりも複雑な設定を行うことができます。 |
capabilities | APIを操作するユーザーが対象の共有ドライブに対して保持している権限です。 |
restrictions | 共有ドライブ、または共有ドライブ内のアイテムに対して設定する制限です。 |
colorRgb | 共有ドライブのカラーです。16進数文字列で設定することが可能です。 |
themeId | 共有ドライブのテーマIDを指定します。テーマIDはAbout:get APIから一覧を参照可能です。colorRgb もしくは backgroundImageFile パラメーターがセットされていない場合に利用可能です。 |
hidden | 共有ドライブをDefaultビューで表示させるか否かを指定します。 |
backgroundImageLink | 共有ドライブの背景イメージのURLを指定します。 |
共有ドライブに対してAPIで操作できること
共有ドライブに対して Google ドライブAPIで操作できる処理は以下の7つです。これらの処理は Google ドライブのUI上からも操作可能ですが、APIを利用することでシステム的に自動化することができます。
メソッド | 操作内容 |
---|---|
create | 共有ドライブを1件作成する。 |
delete | 共有ドライブを1件削除する。 |
get | 共有ドライブのメタデータを1件取得する。 |
hide | 共有ドライブを1件非表示にする。 |
list | 共有ドライブのメタデータを一覧で取得する。 |
unhide | 共有ドライブを1件表示する。 |
update | 共有ドライブを1件更新する。 |
Drives: create 共有ドライブの作成
- HTTPリクエスト
HTTPリクエスト |
---|
POST https://www.googleapis.com/drive/v3/drives |
- APIパラメーター
必須パラメーター | 型 | 説明 |
---|---|---|
requestId | string | 共有ドライブのべき等作成に対するこのユーザーの要求を一意に識別するランダムUUIDなどのID。同じユーザーと同じリクエストIDで繰り返しリクエストを行うと、同じ共有ドライブを作成しようとして重複が発生するのを防ぐことができます。共有ドライブがすでに存在する場合、409エラーが返されます。 |
- 説明
共有ドライブの作成を行うためのAPIです。APIを実行するためには、requestIdパラメーターにランダムに生成されたはUUID文字列を指定する必要があります。このIDは共有ドライブの重複作成を防止するために必要となるパラメーターです。requestIdが必須パラメータとなり、任意で共有ドライブの名称や背景画像等のパラメータを追加することができます(前述したDrivesリソース参照)。
Drives: delete 共有ドライブの削除
- HTTPリクエスト
HTTPリクエスト |
---|
DELETE https://www.googleapis.com/drive/v3/drives/driveId |
- APIパラメーター
パラメーター | 必須 | 型 | 説明 |
---|---|---|---|
driveId | ◯ | string | 共有ドライブのID |
- 説明
共有ドライブを削除するためのAPIです。ただし、共有ドライブを削除するためには「共有ドライブ内にファイル・フォルダが存在しない」という条件が必要になります。ファイル・フォルダが存在する共有ドライブにこのAPIを実行する場合、以下のようなエラーが発生します。削除APIを実行したい場合は、事前にファイル・フォルダの全削除が必要になります。driveIdは削除する対象の共有ドライブを指定するために必須のパラメーターになります。
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "This resource cannot be deleted because it has children.",
"reason" : "cannotDeleteResourceWithChildren"
} ],
"message" : "This resource cannot be deleted because it has children."
}
Drives: get 共有ドライブのメタデータを取得
- HTTPリクエスト
HTTPリクエスト |
---|
GET https://www.googleapis.com/drive/v3/drives/driveId |
- APIパラメーター
パラメーター | 必須 | 型 | 説明 |
---|---|---|---|
driveId | ○ | string | 共有ドライブのID |
useDomainAdminAccess | boolean | ※後述 |
- 説明
共有ドライブのメタデータを取得するためのAPIです。APIに接続するアカウントが共有ドライブに対して権限が不十分である場合、以下のようなエラーが発生します。driveIdは参照する対象の共有ドライブを指定するために必須のパラメーターになります。useDomainAdminAccessについてはオプションのパラメーターですが、説明については後述します。
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"location" : "file.permissions",
"locationType" : "other",
"message" : "Insufficient permissions for this file",
"reason" : "forbidden"
} ],
"message" : "Insufficient permissions for this file"
}
Drives: hide 共有ドライブの非表示
- HTTPリクエスト
HTTPリクエスト |
---|
POST https://www.googleapis.com/drive/v3/drives/driveId/hide |
- APIパラメーター
パラメーター | 必須 | 型 | 説明 |
---|---|---|---|
driveId | ○ | string | 共有ドライブのID |
- 説明
共有ドライブを非表示にするためのAPIです。driveIdは非表示対象の共有ドライブを指定するために必須のパラメーターになります。
Drives: list 共有ドライブの一覧
- HTTPリクエスト
HTTPリクエスト |
---|
GET https://www.googleapis.com/drive/v3/drives |
- APIパラメーター
パラメーター | 必須 | 型 | 説明 |
---|---|---|---|
pageSize | integer | 一度に取得する共有ドライブ数(1~100) ※デフォルト100 | |
pageToken | string | 共有ドライブ一覧を取得するためのページトークン | |
q | string | 共有ドライブを検索するためのクエリ(後述) | |
useDomainAdminAccess | boolean | ※後述 |
- 説明
共有ドライブのメタデータを一覧で取得するためのAPIです。必須パラメータは存在しませんが、オプションパラメータはいくつか存在します。
Drives: unhide 共有ドライブの表示
- HTTPリクエスト
HTTPリクエスト |
---|
POST https://www.googleapis.com/drive/v3/drives/driveId/unhide |
- APIパラメーター
パラメーター | 必須 | 型 | 説明 |
---|---|---|---|
driveId | ○ | string | 共有ドライブのID |
- 説明
共有ドライブを非表示にするためのAPIです。driveIdは表示対象の共有ドライブを指定するために必須のパラメーターになります。
Drives: update 共有ドライブの更新
- HTTPリクエスト
HTTPリクエスト |
---|
PATCH https://www.googleapis.com/drive/v3/drives/driveId |
- APIパラメーター
パラメーター | 必須 | 型 | 説明 |
---|---|---|---|
driveId | ○ | string | 共有ドライブのID |
useDomainAdminAccess | boolean | ※後述 |
- 説明
共有ドライブのメタデータを更新するためのAPIです。driveIdは必須パラメータとして、任意で共有ドライブの名称や背景画像等のパラメータも追加します(前述したDrivesリソース参照)。
useDomainAdminAccessパラメータとは?
上記7つのAPIのうち、create/updateに該当するAPIにはuseDomainAdminAccessというリクエストパラメータがサポートされています。Google翻訳で直訳すると、以下のような説明になります。
「ドメイン管理者としてリクエストを発行します。trueに設定すると、ファイルIDパラメーターが共有ドライブを参照し、リクエスターが共有ドライブが属するドメインの管理者である場合、リクエスターにアクセスが許可されます。(デフォルト:false)」
要は、API実行者が Google Workspace 管理者である場合、useDomainAdminAccessパラメーターを利用(useDomainAdminAccess=true)すると、共有ドライブに対する権限がなくても、ドメインに属する共有ドライブ全てにアクセスすることができるという意味のようです。
共有ドライブの検索クエリ
共有ドライブの Drives:list メソッドには、検索クエリのためのパラメーター「q」が存在します。このパラメーターを利用することで、クエリによって共有ドライブの検索を行うことができます。
検索は以下のフォーマットによって構成されます。
query_term operator values
「query_term」は、検索のためのクエリ用語、もしくはフィールドを表します。「operator」はクエリの演算子、「value」は検索結果をフィルタリングするための特定の値を表します。
検索クエリの例
実際に利用できる検索クエリの例は以下の通りです。
クエリ例 | 説明 | useDomainAdminAccessの設定 |
---|---|---|
organizerCount = 0 | 管理者のいない共有ドライブ | true |
name contains ‘confidential’ and memberCount >= 20 | 名前に「confidential」が含まれる、且つメンバーが20人以上存在する共有ドライブ | true |
createdDate > ‘2017-06-01T12:00:00’ | 2017年6月1日以降に作成された共有ドライブ | true |
hidden = false | デフォルトビューに表示される共有ドライブ | false |
まとめ
今回の記事のまとめは以下の通りです。
- Google ドライブAPIを使用して共有ドライブに対して実行可能な操作は7種類あります。これにより、開発者や管理者はさまざまな自動化やカスタマイズが可能になります。
- Google Workspaceの管理者は、
useDomainAdminAccess
パラメータを使用することで、ドメインに属するすべての共有ドライブに接続することができます。この機能は、組織全体のドライブへのアクセスと管理を容易にします。 - 共有ドライブにファイルやフォルダが存在する場合、APIを介してその共有ドライブを削除することはできません。これは、誤って重要なデータを失うリスクを減らすための措置です。
Drives:list
メソッドでは、検索クエリのパラメーター「q」を指定することができます。これにより、特定の条件や要件に基づいて共有ドライブを効率的に検索し、絞り込むことが可能になります。