ユーザーがファイルを選択してドライブ UI の [アプリで開く] メニュー項目をクリックすると、ドライブ UI 統合を構成するで定義されたそのアプリのオープン URL にユーザーがリダイレクトされます。
ドライブの UI 統合を構成するときに [インポート] チェックボックスをオンにした場合、ユーザーはアプリ固有のファイルと Google Workspace ファイルの組み合わせを選択して開くことができます。ドライブの UI 統合を構成すると、アプリ固有のファイルは [デフォルトの MIME タイプ] フィールドと [デフォルトのファイル拡張子] フィールドで定義されます。Google Workspace のファイルは [セカンダリ MIME タイプ] と [セカンダリ ファイル拡張子] フィールドで定義されます。
ドライブは、ユーザーが開こうとしているファイルごとに、MIME タイプを定義済みのデフォルトおよびセカンダリ MIME タイプと照合します。
[デフォルトの MIME タイプ] フィールドで定義された MIME タイプの場合、ファイル ID がアプリに渡されます。アプリ固有のファイルを処理する方法については、アプリ固有のドキュメントのオープン URL を処理するをご覧ください。
[セカンダリ MIME タイプ] フィールドで定義した MIME タイプについては、Google Workspace ファイルの変換先のファイル形式を尋ねるダイアログがドライブの UI に表示されます。たとえば、ドライブの UI で Google ドキュメント ファイルを選択し、[Secondary MIME タイプ] でアプリが text/plain または application/pdf をサポートしていると示された場合、ドライブの UI に、書式なしテキストまたは PDF に変換するかどうかをユーザーに尋ねるメッセージが表示されます。
Google Workspace ファイルの処理方法については、Google Workspace ドキュメントのオープン URL を処理するをご覧ください。Google Workspace ドキュメントと MIME タイプの変換形式のリストについては、Google Workspace ドキュメントの MIME タイプをエクスポートするをご覧ください。
アプリ固有のドキュメントのオープン URL を処理する
ドライブ UI 統合を構成するで説明したように、アプリは、ファイルを開くための情報を含むテンプレート変数を受け取ります。アプリは、state
パラメータ内でデフォルトのテンプレート変数のセットを受け取ります。アプリ固有のオープン URL のデフォルトの state
情報は次のとおりです。
{
"ids": ["ID"],
"resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
"action":"open",
"userId":"USER_ID"
}
この出力には次の値が含まれます。
- ID: 親フォルダの ID。
- RESOURCE_KEYS: それぞれのリソースキーにマッピングされたファイル ID の JSON 辞書。
open
: 実行されるアクション。Open URL を使用する場合、値はopen
です。- USER_ID: ユーザーを一意に識別するプロファイル ID。
アプリは、このリクエストに応じて以下の手順を行う必要があります。
action
フィールドの値がopen
であり、ids
フィールドが存在することを確認します。userId
値を使用して、ユーザーの新しいセッションを作成します。ログイン ユーザーの詳細については、ユーザーと新しいイベントをご覧ください。files.get
メソッドを使用して、権限の確認、ファイル メタデータのフェッチ、ID
値によるファイル コンテンツのダウンロードを行います。- リクエストで
resourceKeys
が設定されている場合は、X-Goog-Drive-Resource-Keys
リクエスト ヘッダーを設定します。リソースキーの詳細については、リソースキーを使用してリンク共有ファイルにアクセスするをご覧ください。
state
パラメータは URL エンコードされているため、アプリでエスケープ文字を処理して JSON として解析する必要があります。
Google Workspace ドキュメントのオープン URL を処理する
ドライブ UI 統合を構成するで説明したように、アプリは state
パラメータ内でデフォルトのテンプレート変数のセットを受け取ります。Google Workspace のオープン URL のデフォルトの state
情報は次のとおりです。
{
"exportIds": ["ID"],
"resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
"action":"open",
"userId":"USER_ID"
}
この出力には次の値が含まれます。
- EXPORT_ID: エクスポートされるファイル ID のカンマ区切りのリスト(組み込みの Google ドキュメントを開く場合にのみ使用されます)。
- RESOURCE_KEYS: それぞれのリソースキーにマッピングされたファイル ID の JSON 辞書。
open
: 実行されるアクション。Open URL を使用する場合、値はopen
です。- USER_ID: ユーザーを識別するプロファイル ID。
アプリは、このリクエストに応じて以下の手順を行う必要があります。
state
フィールドのopen
値とexportIds
フィールドの有無を両方とも検出して、これがファイルを開くリクエストであることを確認します。files.get
メソッドを使用して、権限の確認、ファイル メタデータのフェッチ、EXPORT_ID
値による MIME タイプの確認を行います。files.export
メソッドを使用して、ファイルの内容を変換します。次のコードサンプルは、リクエストされた MIME タイプに Google Workspace ドキュメントをエクスポートする方法を示しています。リクエストで
resourceKey
が設定されている場合は、X-Goog-Drive-Resource-Keys
リクエスト ヘッダーを設定します。リソースキーの詳細については、リソースキーを使用してリンク共有ファイルにアクセスするをご覧ください。Java
Python
Node.js
PHP
変換されたファイルを読み取り専用として表示するか、ユーザーが新しいファイル形式でファイルを保存できるダイアログを表示します。
state
パラメータは URL エンコードされているため、アプリでエスケープ文字を処理して JSON として解析する必要があります。
ユーザーと新しいイベント
ドライブアプリは、「アプリで開く」イベントを潜在的なログインとして扱う必要があります。複数のアカウントを持っているユーザーもいるため、state
パラメータのユーザー ID が現在のセッションと一致しない場合があります。state
パラメータのユーザー ID が現在のセッションと一致しない場合は、アプリの現在のセッションを終了し、リクエストされたユーザーとしてログインします。
関連トピック
Google ドライブの UI からアプリを開くだけでなく、アプリ内からコンテンツを選択するためのファイル選択ツールを表示することもできます。詳細については、Google Picker をご覧ください。