こんにちは。CData Software Japan リードエンジニアの杉本です。
前回、CData Excel Onlineの基本的な使い方を解説しました。
CData Excel Online はデフォルトだとOneDriver for business にアクセスする設定になっているのですが、設定を追加することで、SharePoint ドキュメントライブラリのExcel ファイルたちにもアクセスすることが可能です。
というわけで、今回はSharePoint ドキュメントライブラリ側へのアクセス方法を解説したいと思います。
必要なプロパティ:Drive
SharePointのドキュメントライブラリにアクセスしたい場合は、以下の「Drive」という接続プロパティを設定する必要があります。
おそらくSharePointに慣れ親しんでいる人からすれば、この「Drive」とはなんぞや? となるかと思いますが、以下のGraphAPIのドキュメントで触れられている通り、ユーザーのOneDriveもしくはSharePointのドキュメントライブラリを表す「最上位のオブジェクト」のことを示すものらしいです。(私もこのDriverをテストしていて初めて知りました)
前述の通り、CData Excel Online Driverはデフォルトでは「ユーザーの規定のドライブのルートフォルダー」つまるところ、自分のOneDriver for businessに対してアクセスし、Excelファイルをリストアップします。
これを、別なドライブ、SharePoint ドキュメントライブラリに切り替えることで、Excelファイルのリストアップ先を切り替えられるというわけです。
Drive IDの確認方法
さて、この「Drive」プロパティにはDriveの一意なIDを指定する必要があります。
このIdは「Drives」というビューから取得できます。
「Drives」ビューはデフォルトでTOPレベルのSharePointサイトから情報を取得するようになっており、
今回は以下のトライアル環境で初期から構成されている「コミュニケーションサイト」が持っている3つのドキュメントライブラリを表示しています。
DriveのIDが特定できたら、一旦その値を控えておき、接続文字列に追加します。
jdbc:excelonline: InitiateOAuth=GETANDREFRESH; Drive=b!8Rtlnfaxp026n7Ood_wFeNvigKFzRL5DiEunZRzweXIe4pU8E5skSrx6-Z5etpwX;
これにより展開されるExcelファイルが対象のSharePointドキュメントライブラリに含まれるものに切り替わります。
TOPレベルSharePointサイト以外のDriveを特定する方法
もし、TOPレベルのSharePointサイト以外のDrive IDを知りたいよ、という場合は、以下の2つのプロパティを設定してみてください。
SharePointURLにはTOPレベルのSharePointサイトURL、IncludeSharePointSitesを「True」を指定して、再度接続を行い直します。
この「IncludeSharePointSites」をつけることで、Drivesビューにアクセスした際に、すべてのSharePointサイトのドキュメントライブラリをクロールしてくるようになります。
jdbc:excelonline: InitiateOAuth=GETANDREFRESH; SharepointURL=https://sugimomoto51.sharepoint.com/; IncludeSharePointSites=true;
この接続を行う際、AccessTokenの取得し直しが必要です。ODBC DriverやExcel Add-in であれば「変更」ボタン、JDBC Driverの場合は「OAuthSettingsLocation」のファイルを一度削除しましょう。
これで接続を行うと、再度認可要求が実施されます。この際に、SharePointサイト一覧を取得するためのアクセス権が追加されます。
この状態であらためて、「Drives」のビューにアクセスすると、以下のようにTOPサイト以外のサイトが持っているドキュメントライブラリも収集して表示してくれます。これで他のDrive IDも特定できますね。
SharePointサイトが多い場合の注意点
「IncludeSharePointSites」は便利ですが、SharePointサイトが多い場合、時間がかかりすぎる場合があります。
その場合はちょっと面倒ですが、「SharePointSites」でSiteの「ID」を特定してから
DrivesビューをSiteIdでフィルタリングしてあげると、必要最低限のアクセスだけで一覧が取得できます。
SELECT * FROM Drives WHERE SiteId = 'sugimomoto51.sharepoint.com,990e2b67-b696-492b-9c48-98a0d6ab9920,84c319a5-53f6-4cbe-9464-bf80b637cfc7';
おわりに
今回紹介した機能意外にもExcelファイルを扱う上で便利な機能がたくさん存在します。
もし利用方法でわからない点があれば、お気軽にテクニカルサポートフォームまでお問い合わせください。