Box APIをPower Platformから使う

# Box APIをPower Platformから使う

本記事ではM365のプロダクトの一つであるPower PlatformからBox APIを利用する方法について記載します。題材としては、Boxの[メタデータクエリ](https://ja.developer.box.com/guides/metadata/)を用いて検索を行うアプリを作っていきます。

開発・設定手順を全て説明すると膨大な量になってしまうため、本記事では開発の流れとポイントに触れます。より詳細な手順は[こちらの資料](https://cloud.box.com/s/g8oqhiuorfnctyyy0b62qq6pv9hn0aw2)を参照してください。また、今回作成するアプリの実際の動きの[動画](https://cloud.box.com/s/0nbnmjghpqmquieqbe208zkdud06vjty)も録画しました。本記事と併せてご覧ください！！


## Power Platformとは
M365に含まれるローコードツールの総称です。いくつかのサービスの総称ですが、今回はこのうちワークフロー作成ツールの[Power Automate](https://www.microsoft.com/en-us/power-platform/products/power-automate)とアプリ開発の[Power Apps](https://www.microsoft.com/en-us/power-platform/products/power-apps)を利用します。

記載の内容を実装するにはPower Platformの有償ライセンスが必要になる場合があります。ライセンス体系についてはMicrosoft社へお問い合わせください。

## Box APIとは
BoxはブラウザでGUIからご利用いただくのが一般的ですが、これとは別にプログラムからもBoxの機能を利用することができます。このインタフェースの一群が[Box API](https://www.box.com/platform)です。

API利用の際に使えるツールとして主要プログラミング言語から使える[SDK](https://ja.developer.box.com/sdks-and-tools/)もあります。が、Power Automateはプログラミング言語を使わず開発する作りのため、今回はSDKなしで直接Box APIをコールします。

※Box APIを利用するにはBoxのライセンス契約とは別にAPIの契約が必要となります。詳しくは担当営業にお問い合わせください！

# 開発の流れ

## セットアップ

まずBox側の準備として[カスタムアプリ](https://ja.developer.box.com/guides/applications/custom-apps/)を作成します。認証方式は **「OAuth 2.0 (ユーザーまたはクライアント認証)」** を選択します。この設定により、Power AutomateからはBoxの管理対象ユーザーの権限でAPIをコールすることになります。

APIコールの際にはBoxのコラボレーションによってアクセスできるファイル・フォルダが決まり、これはGUIからの利用時と同様です。

## カスタムコネクタの準備

Power AutomateはM365の他プロダクト（e.g. Teams, SharePoint）とのコネクターや、サードパーティ製品（e.g. [Salesforce](https://learn.microsoft.com/en-us/connectors/salesforce/), [ServiceNow](https://learn.microsoft.com/en-us/connectors/service-now/)）とのコネクターが用意されています。これらを用いることで比較的簡単にシステム間連動の仕組みを作ることができます。

もちろん、Boxも[コネクター](https://learn.microsoft.com/en-us/connectors/box/)が用意されており、ファイルアップロードやコピーなど基本的な機能はすぐに利用できます。

（Boxコネクターのアクションの一部）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629947/af84fdb2-43e1-77fd-b531-d269eb96ebe5.png" width="400"/>

一方、コネクターが対応していない機能を使う場合は自らコネクターを定義する必要があります。今回実施しようとしているBoxのメタデータクエリはBoxコネクターが対応していないため、まずカスタムコネクターを作成します。

作成にあたっては、利用するAPIの
- 引数
- 返ってくる結果の形式

の情報が必要です。そのため、APIドキュメントを参照しながらでなければ設定できません。BoxのAPIドキュメントは[こちら](https://ja.developer.box.com/reference/)に公開されています。

(BoxのAPIリファレンス)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629947/15bd55f3-ab76-adc2-9932-76fc373d57aa.png)

APIリファレンスの中のリクエスト本文や例を見ながら、「必須」のパラメータは必ず定義、それ以外については必要であればカスタムコネクターの引数に定義します。同様に、レスポンスの形式を見てアプリで利用したい情報がどのように返却されるかを確認します。

## Flowの作成

FlowとはPower Automateで作成する処理の単位で、その名の通りワークフローの定義です。

この辺りの処理をさせます。

- 入力した値の取得
- Box APIのコール
- 結果の取得とApoへの受け渡し

ユーザーに入力をさせる項目と、APIコールに必要な引数がピッタリ一致することはほぼ無いので、適宜ユーザー入力値を引数にあうように加工も必要です。

取得した値は次にアプリ上で表示させるために使うので、こちらも必要に応じて加工します。

（フロー定義画面）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629947/641427c8-dff8-bb02-4014-72eab335ae19.png)


## Appの作成

ユーザーが実際に触る画面を作ります。入力欄やボタンはGUIでDrag & Dropで作れます。動作や表示に関しては一部コードを書く必要があります。ちなみにこの部分は全くBoxの知識はほぼ要りません。

個人的な感想ですが、ロジックの組み方はかなりクセがあります。一般的なプログラミング言語と異なり、Excel関数を組み立てるときに近い印象です。慣れるまでは大変かも知れません。また、[資料](https://cloud.box.com/s/g8oqhiuorfnctyyy0b62qq6pv9hn0aw2)に記載している実装方法は一例ですので、もしもっと簡単な方法があるよ！というものがありましたらぜひ教えてください！

（画面の作成）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629947/922c6982-5313-50ad-2fbe-3dbbffe2730e.png)

# 終わりに

Power PlatformからBox API利用までの流れをざくっと解説しました。Box APIの知識が必要になるのはカスタムコネクターの作成の部分のみで、これさえ作成できてしまえば、あとはPower Platformの開発と同じです。

ローコード開発プラットフォームのPower PlatformからBoxの様々な機能を使えるようになることで、Boxを用いたいろいろな業務効率化の範囲が広がるはずです！また、実際にPower Platformを用いて開発したアプリの事例もありましたらぜひBoxメンバーにもぜひ共有をお願いします！！