Office365にはMicrosoft Graph APIというAPIが提供されていて、それを使えばOffice365にアクセスすることができます。
ただ、トークンを自分で取得する必要があったり、APIの使い方を覚える必要があったりしてちょっと手間です。
そこで、Office365のFlowを使って、ノンコーディングで、なんちゃってOffice365 APIを作る方法を紹介します。
Office365 Flowとは
Office365 Flowとは、マイクロソフト版 IFTTT のようなものです。色んなサービスをGUIでつなげていき、タスクパイプラインを作ることができます。
例)Outlookからメールを送信するAPIを作ってみる
Flow作成
Office365の左上の格子状のメニューから「Flow」を選択して、新規で一からFlowを作成します。
API受けの作成
最初にFlowの実行トリガーを設定するのですが、「HTTPによるアクセス」をトリガーにすることにより、APIを作成します。
[組み込み]-[要求]-[HTTP 要求の受信時]でトリガーを作成します。
Flowを保存するとURLが発行され、「HTTP POST の URL」に記載されます。
そのURLにアクセスすると、それをトリガーにFlowが実行されるようになるので、それを使ってAPIを作ります。
パラメータの設定
URL呼び出し時にJSONでパラメータを渡すことができ、どんなパラメータが渡されるかを「要求本文のJSONスキーマ」で定義します。
今回はメールを送るので「to」「title」「message」を設定できるようにします。
また、URLは誰でも叩けてしまうので、「token」も送るようにして、その値をチェックして合っていた時だけメールを送信するようにします。
「サンプルのペイロードを使用してスキーマを生成する」を押して、下記のような送るJSONのサンプルを入力します。
すると、よしなにJSONスキーマを作成してくれます。
トークンチェック
誰でもAPIが実行されてしまわないように、トークンをチェックするようにします。
[制御]-[条件]アクションを追加します。
「値を選択」をクリックすると、先程登録したJSONパラメータが候補にでてくるので「token」を選択し、正解のトークン値を入力して比較するようにします。
条件設定中
条件設定済
メール送信
先程設定した「条件」が「はい」の場合に、[Office365 Outlook]-[メールの送信]アクションを登録します。
「宛先」「件名」「本文」にJSONパラメータの「to」「title」「message」を設定します。
APIの応答の設定
「メール送信」アクションの後に[要求]-[応答]アクションを登録します。
ここで設定した内容が、APIの応答として、APIの呼び出し元に送られます。
今回はAPIっぽくJSONを返したいので、「本文」に下記のようなJSONを書きます。
以上で完成です。
全体の流れは下記のようになります。
トークンが間違っていた場合の応答を作成しても構いません。特に作成しなかった場合は、Flowが代わりに502エラーを返してくれます。
Flowを保存するとURLが確定するので、そのURLに「POST」でアクセスし、JSONでパラメータを送るとFlowが実行されます。
呼び出し例
import axios from 'axios'; (async ()=>{ const url = 'Flowで生成されたURL'; const json = { token: 'aaaa', to:'test@test.test.test.com', title:'テストメール', message:'テストメール本文' }; const res = await axios.post(url, json); // APIからの応答「{"result":"success", "to":…}」が表示される console.log(res.data); })();
応用・拡張
例ではOffice365にアクションを起こさせるAPIでしたが、応答の本文にはFlowのパイプライン実行過程で取得したデータを入れることもできるので、「最新の未読メールを取得する」といった、Office365からデータを取得するAPIを作成することも可能です。
Flowで接続できるサービスは、最近のマイクロソフトらしく、Office365だけでなく、Slack・Dropbox・Googleなど外部サービスも色々対応しているので、それらを操作するAPIを作ることもできます。
また、Flowの中からURLを叩くこともできるので、コネクターが用意されていないサービスと接続することも可能です。