ユーザーがファイルを選択して ドライブの UI の [アプリで開く] メニュー項目をクリックすると、ドライブは、ドライブ UI 統合を構成するで定義されたそのアプリの [Open URL] にユーザーをリダイレクトします。
ドライブ UI の統合を構成するときに [インポート] チェックボックスをオンにした場合、ユーザーはアプリ固有のファイルと Google Workspace ファイルの組み合わせを選択して開くことができます。ドライブ UI の統合を構成する場合、アプリ固有のファイルは [デフォルトの MIME タイプ] フィールドと [デフォルトのファイル拡張子] フィールドで定義されます。一方、Google Workspace ファイルは [セカンダリ MIME タイプ] フィールドと [セカンダリ ファイル拡張子] フィールドで定義されます。
ユーザーが開こうとするファイルごとに、ドライブは、定義されたデフォルトの MIME タイプとセカンダリ MIME タイプと照らし合わせて MIME タイプをチェックします。
[デフォルトの MIME タイプ] フィールドで定義された MIME タイプの場合、ファイル ID がアプリに渡されます。アプリ固有のファイルを処理する方法については、アプリ固有のドキュメントの Open URL を処理するをご覧ください。
[セカンダリ MIME タイプ] フィールドで定義されている MIME タイプの場合、Google Workspace ファイルの変換後のファイル形式をユーザーに尋ねるダイアログがドライブの UI に表示されます。たとえば、ドライブの UI で Google ドキュメント ファイルを選択し、[二次 MIME タイプ] フィールドにアプリが text/plain または application/pdf をサポートしていることが示されている場合、ドライブの UI でプレーンテキストまたは PDF に変換するかどうかをユーザーに尋ねます。
Google Workspace ファイルを処理する方法については、Google Workspace ドキュメントの Open URL を処理するをご覧ください。Google Workspace ドキュメントと MIME タイプの変換形式の一覧については、Google Workspace ドキュメントの MIME タイプをエクスポートするをご覧ください。
アプリ固有のドキュメントの Open 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
: 実行されるアクション。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
: 実行中のアクション。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 をご覧ください。