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