Boxの指定したフォルダ下にあるファイル情報を取得する
本記事はCDataが提供する「CData Software Blog」に掲載された「Boxドライバー : 指定したフォルダにあるファイル情報を取得する方法」を再編集したものです。
本記事では、CData Box ドライバーで指定したフォルダ下にあるファイル情報を取得する方法を紹介します。「フォルダ下」と一言で言ってもサブフォルダを含めるケース、含めないケースなどあるため、今回は以下の3つのケースに分けてファイル情報を取得する方法を説明します。
1. 指定したフォルダ直下のみのファイル情報を取得する
2. 指定したフォルダの下位フォルダを含むすべてのファイル情報を取得する
3. 指定したフォルダの下位フォルダ直下のみのファイル情報を取得する
説明のためのシナリオとして、Box に以下ようにフォルダおよびファイルが配置されているとします。ルート直下にFolderA というフォルダがあり、この直下に3 つのファイルと2 つのフォルダが存在します。2 つのフォルダはそれぞれSubFolderA とSubFolderB で、それぞれのフォルダの下にさらに3 つのファイルが配置されています。FolderA のId は「123」で、ドライバーを使ってファイル情報を取得する際はこのId を使います。
1. 指定したフォルダ直下のみのファイル情報を取得する
Box に保存されているファイル情報はFiles テーブルで取得します。例えばクエリ SELECT * FROM Files を実行するとBox にある全ファイルの情報を取得します。FolderA の直下にある3 つのファイルのみを取得する場合、以下のようにParentId にFolderA のId を指定してフィルタ条件を設定します。
SELECT Name, Path FROM Files WHERE ParentId = ‘123';
上のクエリを実行すると以下のようにFolderA の下にある3 つのファイル情報が取得できます。
2. 指定したフォルダの下位フォルダを含むすべてのファイル情報を取得する
FolderA の下位フォルダを含むすべてのファイル情報を取得する場合、以下のようにSearchRootId にFolderA のID を指定してフィルタ条件を設定します。
SELECT Name, Path FROM Files WHERE SearchRootId = '123';
上のクエリを実行すると以下のようにFolderA にある3 つのファイルに加え、サブフォルダSubFolderA、SubFolderB にある全ファイルの情報も取得できます。なお、このとき探索するサブフォルダの階層数はDirectoryRetrievalDepthプロパティで指定できます。
3. 指定したフォルダの下位フォルダ直下のみのファイル情報を取得する
FolderA 直下のファイル情報は除外し、下位フォルダにあるファイルのみの情報を取得する場合、以下のようにサブクエリを使います。このクエリを実行すると、サブクエリのSELECT Id FROM Folders WHERE ParentId = 飓' でFolderA にある二つのフォルダのId を取得し、それぞれSELECT Name, Path from Files WHERE ParentId = ? のフィルタ条件に渡されます。つまり、ドライバーはSELECT Name, Path from Files WHERE ParentId = SubFolderAのId 、SELECT Name, Path from Files WHERE ParentId = SubFolderB のId をそれぞれ実行し、結果を結合して出力します。
SELECT Name, Path from Files WHERE ParentId IN (SELECT Id FROM Folders WHERE ParentId = '123');
上記のクエリを実行すると、以下のようにFolderA 下のSubFolderA、SubFolderB にあるファイルの情報のみが取得できます。
おわりに
本記事ではCData Box ドライバーで、指定したフォルダ下にあるファイル情報を取得する方法を紹介しました。CData Box ドライバーは30日間無料で試用できます。Box との連携をご検討の方はぜひお試しください。