ユーザーがファイルを選択して [ドライブの管理画面の「アプリで開く」]メニュー項目をクリックすると、ドライブはユーザーを、[ドライブの管理画面の統合を設定する]で定義されているアプリのオープン URL にリダイレクトします。
ドライブの管理画面の統合を設定するときに [インポート] チェックボックスをオンにした場合、ユーザーはアプリ固有のファイルと Google Workspace ファイルの組み合わせを選択して開くことができます。ドライブの管理画面の統合を設定するとき、アプリ固有のファイルは [デフォルトの MIME タイプ] フィールドと [デフォルトのファイル拡張子] フィールドで定義されます。一方、Google Workspace ファイルは [予備の MIME タイプ] フィールドと [予備のファイル拡張子] フィールドで定義されます。
ユーザーが開こうとしているファイルごとに、ドライブは定義済みのデフォルトの MIME タイプと予備の MIME タイプと照合して MIME タイプを確認します。
[デフォルトの MIME タイプ] フィールドで定義された MIME タイプの場合、ファイル ID が アプリに渡されます。アプリ固有のファイルの処理方法については、 アプリ固有のドキュメントのオープン URL を処理するをご覧ください。
[予備の MIME タイプ] フィールドで定義された MIME タイプの場合、ドライブの管理画面に、Google Workspace ファイルを変換するファイル形式をユーザーに尋ねるダイアログが表示されます。たとえば、ドライブの管理画面で Google ドキュメント ファイルを選択し、[予備の MIME タイプ] フィールドでアプリが text/plain または application/pdf をサポートしていることが示されている場合、ドライブの管理画面でプレーン テキストまたは PDF に変換するかどうかをユーザーに尋ねます。
Google Workspace ファイルの処理方法については、Google Workspace ドキュメントのオープン URL を処理するをご覧ください。Google Workspace ドキュメントと MIME タイプの変換形式の一覧については、 Google Workspace ドキュメントの MIME タイプをエクスポートする をご覧ください。
アプリ固有のドキュメントのオープン URL を処理する
ドライブの管理画面の統合を設定するで説明したように、アプリは、アプリがファイルを開くための情報を含むテンプレート変数を受け取ります。アプリは、テンプレート変数のデフォルト セットを
state パラメータ内で受け取ります。アプリ固有のオープン 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 ドキュメントのオープン URL を処理する
ドライブの管理画面の統合
を設定するで説明したように、アプリは、
テンプレート変数のデフォルトセットをstateパラメータ内で受け取ります。Google Workspace のオープン URL のデフォルトの state 情報は次のとおりです。
{
"exportIds": ["ID"],
"resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
"action":"open",
"userId":"USER_ID"
}
この出力には次の値が含まれます。
- EXPORT_ID: エクスポートされるファイル ID のカンマ区切りのリスト。Google Workspace ファイルを開く場合にのみ使用されます。
- 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 ドライブの管理画面からアプリを開く以外に、アプリ内でファイル選択ツールを表示してコンテンツを選択することもできます。詳細については、Google Picker をご覧ください。