LoginSignup
5
14

More than 5 years have passed since last update.

Office365にアクセスできる、なんちゃってAPIをノンコーディングで作ってみる

Last updated at Posted at 2019-01-16

本記事について

Office365にはMicrosoft Graph APIというAPIが提供されていて、それを使えばOffice365にアクセスすることができます。

ただ、トークンを自分で取得する必要があったり、APIの使い方を覚える必要があったりしてちょっと手間です。

そこで、Office365のFlowを使って、ノンコーディングで、なんちゃってOffice365 APIを作ってみます。

Office365 Flowとは

Office365 Flowとは、マイクロソフト版 IFTTT のようなものです。色んなWebサービスをGUIでつなげてタスクを作ることができます。

例)Outlookからメールを送信するAPIを作ってみる

Flow作成

Office365の左上の格子状のメニューから「Flow」を選択して、新規で一からFlowを作成を選択します。

API受けの作成

最初にFlowの実行トリガーを設定するのですが、「HTTPによるアクセス」をトリガーにすることにより、APIを作成します。

  • [組み込み]-[要求]-[HTTP 要求の受信時]でトリガーを作成します。 20181206010202.png

Flowを保存するとURLが発行され、「HTTP POST の URL」に記載されます。
そのURLにアクセスすると、それをトリガーにFlowが実行されるようになるので、それを使ってAPIを作ります。

パラメータの設定
URL呼び出し時にJSONでパラメータを渡すことができ、どんなパラメータが渡されるかを「要求本文のJSONスキーマ」で定義します。

今回はメールを送るので「to」「title」「message」を設定できるようにします。

また、URLは誰でも叩けてしまうので、「token」(もどき)も送るようにして、その値をチェックして合っていた時だけメールを送信するようにします。

  • 「サンプルのペイロードを使用してスキーマを生成する」を押して、下記のような送るJSONのサンプルを入力します。 20181206010653.png すると、よしなにJSONスキーマを作成してくれます。 20181206010653.png

トークンチェック

誰でもAPIが実行されてしまわないように、トークンをチェックするようにします。

  • [制御]-[条件]アクションを追加します。

「値を選択」をクリックすると、先程登録したJSONパラメータが候補にでてくるので「token」を選択し、正解のトークン値を入力して比較するようにします。

条件設定中の画面
20181206010653.png

条件設定済の画面
20181206010653.png

メール送信

先程設定した「条件」が「はい」の場合に、[Office365 Outlook]-[メールの送信]アクションを登録します。

  • 「宛先」「件名」「本文」にJSONパラメータの「to」「title」「message」を設定します。 20181206010653.png

APIの応答の設定

「メール送信」アクションの後に[要求]-[応答]アクションを登録します。

ここで設定した内容が、APIの応答として、APIの呼び出し元に送られます。

今回はAPIっぽくJSONを返したいので、「本文」に下記のようなJSONを書きます。

20181206010653.png

以上で完成です。

全体の流れ(Flow)は下記のようになります。

トークンが間違っていた場合の応答を作成しても構いません。特に作成しなかった場合は、Flowが代わりに502エラーを返してくれます。

20181206010653.png

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など外部サービスも色々対応しているので、Flowを使ってそれらを間接的に操作するAPIを作ることもできます。

また、Flowの中からURLを叩くこともできるので、コネクターが用意されていないサービスと接続することも可能です。

元記事

5
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
14