SharePoint Online モダンサイトのドキュメントライブラリでは保存されている画像をサムネイルで表示が出来て楽しいので、いろいろと画像を収集したいなあと思いました。

たとえば Twitter に写真付きでツイートすると SharePoint Online のライブラリにも自動で写真がコピーされると嬉しいなと思い、そういった処理を Microsoft Flow を利用することで実現したいと思います。

さっそく試してみましょう。

Microsoft Flow でフローを作成する

この処理を作成するためには「HTTP コネクタ」を利用するのがもっとも簡単です。まずは、こちらの方法で作成してみます。

Twitter トリガーを設定する

Twitter トリガーの設定では、Twitter の検索コマンドが利用できます。詳しくは Google などで検索いただくとして、ここでは次のように設定します。

from:microsoft filter:twimg -filter:retweets

これで「microsoft というアカウントが投稿したリツイートを除くツイートのうち、画像が添付されたツイート」という指定になります。(@microsoft は Microsoft 公式アカウントです。アカウント名は目的のものに変えてください)

Microsoft Flow ですので、途中の処理で条件分岐を入れても良いのですが、それだと不必要に実行回数を消費してしまうのでトリガーで工夫しておきます。

HTTP コネクタを使って画像データを取得する

次に HTTP コネクタを使って画像データを取得していきます。これは簡単で、HTTP コネクタの URI に Twitter トリガーの「メディア URL 項目」を設定します。ツイートには複数の画像が添付されることがあるので、自動的に Apply to each のループが作成されます。

SharePoint Online のライブラリに保存する

あとは、SharePoint コネクタの「ファイルの作成」アクションを使って、保存したい先のライブラリに保存します。このとき、ファイルコンテンツは、先ほどの HTTP コネクタからの「本文」を設定しておきます。

「ファイル名」については、「式」の機能を使って次のように設定しておくと良さそうです。

last(split(items('Apply_to_each'),'/'))

これでフローの作成は完了です。

あとは、Twitter に画像付きでツイートされると、その画像がフローを介して SharePoint Online のライブラリに保存されます。

HTTP コネクタは Premium コネクタでしょ?

はい。HTTP コネクタは Premium コネクタと呼ばれるものになります。つまりは、Office 365 に付属するライセンスでは利用することができず、別途 Microsoft Flow の有償ライセンスを購入する必要があります。

HTTP コネクタを使わずに同様なフローを作成する

というわけで、Office 365 に付属するライセンスのみで同じような処理を作成してみましょう。

OneDrive for Business コネクタを利用する

OneDrive for Business のコネクタには「URL からファイルのアップロード」アクションが用意されています。今回の場合はこちらを利用できそうです。

HTTP コネクタの代わりに、OneDrive for Business コネクタの「URL からファイルのアップロード」アクションを配置し、「ソース URL」に Twitter トリガーの「メディア URL 項目」を設定します。

「対象ファイルのパス」には保存するファイル名を指定します。先ほどの SharePoint にファイルを保存するときの式を利用すると良いです。

そして、OneDrive for Business に保存した画像を取り出します。OneDrive for Business コネクタの「ファイル コンテンツの取得」アクションを利用します。「ファイル」に設定するのは、「URL からのファイルのアップロード」アクションから出力される「ID」ですね。

そしたらこちらを SharePoint コネクタの「ファイルの作成」アクションを使って、保存したい先のライブラリに保存します。このとき、ファイルコンテンツは、先ほどの「ファイル コンテンツの取得」アクションからの「ファイル コンテンツ」を設定します。

最後に、必要に応じて OneDrive for Business から画像を削除しておきましょう。

これでフローの作成は完了です。

途中の処理は異なりますが、得られる結果は同じですね。

さいごに

HTTP コネクタが Premium コネクタとなり、Office 365 付属のライセンスにおいては Microsoft Flow で実現できることが少なくなるなあ…と思っていたのですが、今回はなんとか工夫することで同じような処理を実現することができました。

どんなコネクタがあるのか、どんなアクションがあるのかをまずは眺めてみるのは大事ですね。