Microsoft Flowを使ってみた


# はじめに

- 2016年11月1日に正式版が公開された[Microsoft Flow](https://flow.microsoft.com/ja-jp/)を試してみました。
- 先行してる類似サービスである[IFTTT](https://ifttt.com/)は使ったことがありません。
- これを書く時点(日本時間で2016年11月6日22時)で私が読んだ関連ドキュメントは　[Introduction to Microsoft Flow \| Microsoft Flow](https://flow.microsoft.com/ja-jp/guided-learning/learning-introducing-flow/) だけなのと、稚拙な英語力なので「使い方」を完璧に理解しているとは言えないですが、まず新しいものに飛びついてみる根性で。
- [Frequently asked questions](https://flow.microsoft.com/ja-jp/documentation/frequently-asked-questions/) によると、`Microsoft Flow supports Microsoft Edge and the current versions of Chrome and Safari.`とのこと。私はChromeで試しました。
- これからサービス自体も劇的に改善されていくと思うので、この情報の鮮度もすぐ落ちてしまうかもしれません。


# やってみること

すでに用意されてるテンプレートを使ってみます。

- Googleスプレッドシートにツイートを保存する
- Excel テーブルで Facebook ウォール メッセージを把握する

の2つをやってみました。
用意されてるテンプレなんか簡単にすぐ使えちゃうんでしょ？って思うでしょ！？
(私はつまりまくったよ、、、＿|￣|○)


# Googleスプレッドシートにツイートを保存する

**Flowの設定の前に、保存先のスプレッドシートを作っておく必要があります**

これ大事。すげー大事。マジ大事。これやってないと変な文字列が入って数時間悩むことになります。(この手順てどこかのドキュメントに書いてありました？)

![tw01.png](https://qiita-image-store.s3.amazonaws.com/0/8612/e6508164-c0d0-06a9-9cab-6168eff0cfb9.png)


↑今回はこんな感じにしました。(SSはスプレッドシートの略)

ポイントは下記。

- GoogleDriveのどこかに
- 「Flowお試しSS」っていう名前のスプレッドシートを作って、
- その中には「test」っていうシートがあって、
- 一行目に「投稿者」「ツイート内容」という見出しがある


**つまりはこの時点で、このFlowで取得できるツイッターの情報が何なのかを知らないとならないのですが、これってどこでわかるのさ？** (Flow作成の途中でわかるのだけれどもさ)


↓ ログインして、「自分のフロー」→「テンプレートから作成」をします。
![tw02.png](https://qiita-image-store.s3.amazonaws.com/0/8612/dc9f5739-aff1-dc07-75dd-c52422cf332e.png)

<BR><BR>

↓ 「Googleスプレッドシートにツイートを保存する」を選択します。
![tw03.png](https://qiita-image-store.s3.amazonaws.com/0/8612/d999ff8b-ed7b-6e50-e58e-65285591a477.png)

<BR><BR>

↓ 使用します。
![tw04.png](https://qiita-image-store.s3.amazonaws.com/0/8612/7c91fabd-19c6-74c2-281c-6d5785ce9c95.png)

<BR><BR>

↓アカウントの認証を行う画面になるので、認証してください(画像は認証後の画面です)
![tw05.png](https://qiita-image-store.s3.amazonaws.com/0/8612/58a97445-66d9-1cfd-aff9-1eeaedd5524d.png)

<BR><BR>
↓ こんな画面になるので、おそらくHITしまくるであろう「test」を検索テキストとして指定。その後、赤マルの部分をクリックすると、スプレッドシートを選択できるので、選択する。
![tw06.png](https://qiita-image-store.s3.amazonaws.com/0/8612/35769c7f-4e8a-4b21-6931-8caaa3c145c9.png)

<BR><BR>
↓ スプレッドシートを選択した画面
![tw07.png](https://qiita-image-store.s3.amazonaws.com/0/8612/aceba862-7088-c0b1-1f38-f9d61af85391.png)

<BR><BR>

↓ Worksheet 欄をクリックすると、選択したスプレッドシートにあるシート名が表示されますので、今回はtestを選択します。
![tw08.png](https://qiita-image-store.s3.amazonaws.com/0/8612/52fe9a31-a58a-cf9b-e47a-bdb18dc52256.png)

<BR><BR>
↓ 数秒待つと、testシートにある列名が表示されます。すごい！！
![tw09.png](https://qiita-image-store.s3.amazonaws.com/0/8612/69d1406b-a190-347d-7e35-fc1386fe9bd6.png)

<BR><BR>

↓ ここで「投稿者」欄をクリックすると、こんな感じで「この列に何の情報を入れるか」を指定できます。(できれば先にこれを知りたいですね！)
![tw10.png](https://qiita-image-store.s3.amazonaws.com/0/8612/403d9b10-6d0e-136e-5bde-a59e4f9dec40.png)

<BR><BR>

せっかくなので2016年11月6日現在、何が取得できるのか書いておきます。

```
Favorited
ツイートがお気に入りとしてマークされたかどうかを示します

in_reply_to_user_id
現在のツイートの返信先であるツイートの作成者のユーザー ID

MediaUrls - 項目

OriginalTweet.MediaUrls - 項目

お気に入りの数
ユーザーがお気に入りに追加したツイートの数

ステータスの数
ユーザーのステータス数

ツイート ID
ツイートの ID

ツイート テキスト
ツイートのテキスト コンテンツ

ツイートの言語
ツイートの言語コード

ツイート作成者
ツイートを投稿したユーザーの名前

フォロワー数
フォロワーの数

プロフィール画像 URL
プロフィール画像の URL

ユーザー ID
ユーザーの Twitter ID

ユーザー名
ユーザーのスクリーン ネーム

リツイート数
ツイートのリツイートの合計数

作成日時
ツイートが投稿された時刻

元のツイート ID
元のツイートの ID

元のツイートがお気に入りに追加されました
元のツイートがお気に入りとしてマークされたかどうかを示します

元のツイートの @ ツイート ユーザーの ID
ユーザーの Twitter ID

元のツイートの @ ツイート ユーザーの名前
ユーザーのスクリーン ネーム

元のツイートの @ ツイート ユーザーの氏名
ユーザーの氏名

元のツイートの in_reply_to_user_id
現在の元のツイートの返信先であるツイートの作成者のユーザー ID

元のツイートのテキスト
取得された元のツイートのテキスト コンテンツ

元のツイートのユーザー プロフィール画像の URL
プロフィール画像の URL

元のツイートのユーザーの ID
ユーザーの Twitter ID

元のツイートのユーザーのお気に入り数
ユーザーがお気に入りに追加したツイートの数

元のツイートのユーザーのステータス数
ユーザーのステータス数

元のツイートのユーザーのフォロワー数
フォロワーの数

元のツイートのユーザーの友だち数
友だちの数

元のツイートのユーザーの場所
ユーザーの場所

元のツイートのユーザーの氏名
ユーザーの名前

元のツイートのユーザーの説明
ユーザーの説明

元のツイートのユーザー名
ユーザーのスクリーン ネーム

元のツイートのリツイート数
この元のツイートに対するリツイートの合計数

元のツイートの作成時刻
元のツイートが投稿された時刻

元のツイートの作成者
元のツイートを投稿した人物のユーザー名

元のツイートの言語
元のツイートの言語コード

友だちの数
友だちの数

名前
ユーザーの名前

場所
ユーザーの場所

説明
ユーザーの説明
```

<BR><BR>

↓ 今回はこんなふうに設定しました。そのまま「フローの作成」をクリックします。
![tw11.png](https://qiita-image-store.s3.amazonaws.com/0/8612/d2911f8b-9349-d7ff-0c38-29ca807b040a.png)

<BR><BR>

↓ フローが作成されます。
![tw12.png](https://qiita-image-store.s3.amazonaws.com/0/8612/d6d96dc2-1535-8e0f-bf87-33270e0f4e03.png)

<BR><BR>

↓ 「自分のフロー」画面に行くと、いま作ったフローが確認できます。
![tw13.png](https://qiita-image-store.s3.amazonaws.com/0/8612/f5a2f847-64f7-0384-dcd8-c9d018758ca2.png)

<BR><BR>
↓ 1分後くらいにスプレッドシートを見てみると取得できてました！！！！(C列の`__PowerAppsId__`は自動で入る見たいです)
![tw14.png](https://qiita-image-store.s3.amazonaws.com/0/8612/352ba1b4-fba6-bcee-a85c-4e44352f8432.png)

<BR><BR>
うわー。なにこれすごいー。

<BR><BR>
↓ 全てのツイートに「test」が含まれるんだろうなーと思って、ctrl+F でtestを検索した結果がこちらです。
![tw15.png](https://qiita-image-store.s3.amazonaws.com/0/8612/18c3f938-7fc7-e193-3e46-20f72686f9c8.png)

<BR>
...あれ？「test」を含まないツイートがある？
ともかく、TwitterをGoogleスプレッドシートを連携させて自動処理をすることができました。すげーよすげー。

<BR><BR>

## 追加で試したいこと(まだやってない)

検索文字列に複数の単語を指定できるのか？


----

# Excel テーブルで Facebook ウォール メッセージを把握する

ツイートをスプレッドシートに保存するときと同じように、**先に保存先のエクセルにテーブルを作っておきます。**

私がここで詰まったのは **テーブルを作る**ということ。
エクセルに何か書いとけばいいのではなく、**テーブルを作る**のがポイントですよ！！！

[ワークシートで Excel のテーブルを作成または削除する](https://support.office.com/ja-jp/article/%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%A7-Excel-%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%BE%E3%81%9F%E3%81%AF%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B-e81aa349-b006-4f8a-9806-5af9df0ac664) を見ながら「fbテスト」という「テーブル」を作成しました。(恥ずかしながら初めて**テーブル**を作りました)

<BR><BR>
↓ 作ったテーブルはこちら。その後、このエクセルをGoogleDriveにアップロードします。
![fb00.png](https://qiita-image-store.s3.amazonaws.com/0/8612/9dbb3a9a-f1e5-2d3c-f26e-21dfe989b421.png)

<BR><BR>

↓ テンプレート「Excel テーブルで Facebook ウォール メッセージを把握する」を選択します。
![fb01.png](https://qiita-image-store.s3.amazonaws.com/0/8612/3ac0fa96-6288-28a8-5108-33c63a16e4f7.png)

<BR><BR>
↓ その後、アカウント認証して、「続行」して、この画面になります。その際に、エクセルがどこに置いてあるかを選択する画面があります。(今回の場合はGoogleドライブ)。
`When there is a new post on my timeline` とあるように、自分のタイムラインに投稿があった時に起動するようです。
![fb02.png](https://qiita-image-store.s3.amazonaws.com/0/8612/59984c45-77c4-fb81-89d1-b7860ccba022.png)

<BR><BR>

↓ 「Excel ファイル名」欄をクリックするとこの画面になるのですが。。。これは不具合かなー。(本来ならGoogleドライブにあるエクセルを選択させる場所なので。あと、フォルダアイコンをクリックしても反応がないのよね)
![fb03.png](https://qiita-image-store.s3.amazonaws.com/0/8612/8965cd87-dfe5-911b-29ca-7663eb9991aa.png)

<BR><BR>

↓ ひとまずこの処理を削除します。上の画面の「insert row」の右側にある「・・・」をクリックして、「削除」するとこんな画面になります。
![fb04.png](https://qiita-image-store.s3.amazonaws.com/0/8612/fd81dea9-4da4-5fd1-2467-2d2fb492aeda.png)

<BR><BR>
↓ 「新しいステップ」→「アクションの追加」→「Excel-行の挿入」を選びます。
![fb05.png](https://qiita-image-store.s3.amazonaws.com/0/8612/9d0859cc-6700-f08c-152d-e85e9c7a34ad.png)

<BR><BR>
↓ 今度はこんな画面になります。今度は赤丸部分が有効になっていて、アップロードしたエクセルを選択できます。
![fb06.png](https://qiita-image-store.s3.amazonaws.com/0/8612/66e123ff-6a45-cb91-4a4e-0989430505d9.png)

<BR><BR>
↓ ファイル(fb.xlsx)を選んで、「テーブル名」欄をクリックするとエクセル内に作った「テーブル名」が表示されるので、それを選択します。
![fb07.png](https://qiita-image-store.s3.amazonaws.com/0/8612/fcf8f920-d7d2-0e83-e51a-dcb254dad5c3.png)

<BR><BR>
↓ 2,3秒待つと、自分がエクセルに作ったカラム(Created TimeとStatus Message)が表示されます。(じつはこの2,3秒が、何も起こらないので不安になるのです)
![fb08.png](https://qiita-image-store.s3.amazonaws.com/0/8612/9d8abe45-eee8-b36c-c3ba-1c1ae64b078c.png)

<BR><BR>
↓ こんな感じで、Created TimeとStatus Messageを、それぞれの列に指定します。
![fb09.png](https://qiita-image-store.s3.amazonaws.com/0/8612/f6c09895-49b3-215b-0393-aa7399064c9b.png)

<BR><BR>
選択できたら画面上部にある「フローの作成」をクリック。

ちなみに、現時点でFacebookから取得できるトークンは下記のようです。

```
Created Time
The time the post was initially published. For a post about a life event, this will be the date and time of the life event.

First name
User first name

Gender
Gender of the user

Last name
User last name

Post ID
The post ID

Post Type
A string indicating the object type of this post.

Status message
The status message in the post.

User bio
User bio

User full name
User full name

User ID
Unique ID of the user
```

<BR><BR>
↓ 作成が完了するとこんな画面になります。
![fb10.png](https://qiita-image-store.s3.amazonaws.com/0/8612/fc2182af-31f1-90aa-5a2a-c2a6e5af1a30.png)

<BR><BR>
↓ 5分くらいしてから、GoogleDrive上にある fb.xlsxをGoogleDriveでみるとこんなことになってました。なんも入ってないじゃないか！！
![fb11.png](https://qiita-image-store.s3.amazonaws.com/0/8612/79a211a3-8df9-a30c-60c9-7fdbbc773adb.png)

<BR><BR>

↓ 行がいっぱいになってたので、GoogleDriveのエクセルを一度削除。この時点でフローを見ると動いていないことがわかります。
![fb12.png](https://qiita-image-store.s3.amazonaws.com/0/8612/72dcb070-6e3c-538c-69cd-656c391d5eea.png)

<BR><BR>

↓ エクセルで「テーブル」を作り直して再アップロード(ファイル名、テーブル名は前回と同じ。テーブルの領域(?)を8000行くらいに広げてみたやつ)したら生き返ったみたい。
![fb13.png](https://qiita-image-store.s3.amazonaws.com/0/8612/5b66cd68-1240-9cd5-e3d2-f06509464ad8.png)

<BR><BR>
↓ その後、Facebookの自分のタイムラインに投稿して3分くらいまっても何も変化無い。
![fb14.png](https://qiita-image-store.s3.amazonaws.com/0/8612/d403933e-8d57-e87e-50b0-5c1516d783f0.png)

<BR><BR>
↓ フローがどうなってるか確認するために、自分のフローから(i)をクリック
![fb15.png](https://qiita-image-store.s3.amazonaws.com/0/8612/383a5f78-2905-47d6-ac57-88de4219a4a5.png)

<BR><BR>
↓ Failedしてるじゃないかぁ！
![fb16.png](https://qiita-image-store.s3.amazonaws.com/0/8612/d67d0ee0-4063-e09a-f3f2-3d347aacc0cd.png)

<BR><BR>
↓ Failedをクリックするとこう。NotFoundってなんだよ！！！

![fb17.png](https://qiita-image-store.s3.amazonaws.com/0/8612/d2bf076a-a8c2-a9d8-d27d-00d9c4c1e031.png)

<BR><BR>
↓ フローの編集。これさっき見た画面。問題無さそう。
![fb18.png](https://qiita-image-store.s3.amazonaws.com/0/8612/4231bd76-5570-f809-d89c-e8b229a216f1.png)

<BR><BR>

↓ と思ったのですが「行の挿入」をクリックすると中が開いてエラー出てる。生き返ってなかった。開く前の画面で教えてほしい！！ そしてこの画面で、もう一度ファイルを指定し直そうと思って「フォルダアイコン」をクリックしたのですが反応なし。
![fb19.png](https://qiita-image-store.s3.amazonaws.com/0/8612/4bba5565-131e-b773-6b05-796fc1b3640b.png)

<BR><BR>
↓ なのでまたもや一度この手順を削除します。
![fb20.png](https://qiita-image-store.s3.amazonaws.com/0/8612/c66c70cf-a65a-0b59-02d2-2f7b129e16dd.png)

<BR><BR>
↓ 新しいステップ → アクションの追加 → Excel行の挿入 → エクセルファイルの指定 → 取得したいトークンの設定
![fb21.png](https://qiita-image-store.s3.amazonaws.com/0/8612/4980e191-df2e-927f-24e4-b9d6224cc71e.png)

<BR><BR>
↓ 「更新フロー」をクリックした後の画面
![fb22.png](https://qiita-image-store.s3.amazonaws.com/0/8612/e0677b16-807a-0d8d-eed1-64e58444da20.png)

<BR><BR>
↓ 「完了」をクリックしてから、再度facebookに投稿しました。その後にエクセルをダウンロードして開いたモノがこちら
![fb23.png](https://qiita-image-store.s3.amazonaws.com/0/8612/c5344c78-feec-1635-b518-675c897f1b2c.png)

<BR><BR>
やったね！取得できてる！！！

...って思うでしょ？でもこれ、8221行目(**テーブル**として指定した最終行)なのですよね。。。
これより上の行には、C列の`__PowerAppsId__`だけが続いてる。何かミスってるのかな。。。


でもひとまず使い方がわかったのでここまで！もっといろんなフローを試してみます。


# 実行数に注意

[プラン \| Microsoft Flow](https://flow.microsoft.com/ja-jp/pricing/)によると、無料プランだと

> 実行数 750 回/1 か月
> 無制限のフロー作成
> 15 分間のチェック

となっています。

↓ 今回は調査目的なので、フローが動かなくていいときは(気づいたら)止めていました。


![fb24.png](https://qiita-image-store.s3.amazonaws.com/0/8612/96a47334-7719-e9c8-4efe-19ed79e55406.png)


↓ 画面右上の設定アイコン(歯車のやつ)を開くと「実行数」が分かります。今回は都合5時間くらい使っている(使わないときはフローをOFFにしている)のですが、こんな感じになってます。

![fb25.png](https://qiita-image-store.s3.amazonaws.com/0/8612/b07c84fc-6ade-5c01-2b5c-75280b2ea799.png)


このままだと 750回/月 はあっという間に消費しますね。
(もしかしたら実行タイミングも設定できるのかもしれません)


# エンジニア的に

これだけだとただのFlowの使い方なのですが、[Start to build](https://flow.microsoft.com/ja-jp/documentation/get-started-flow-dev/) によると、APIを使って自分が作ってるWebアプリとFlow(経由で他サービスと)を連携させていろんなことが自動処理できちゃうみたいです。

個人的には**バックオフィス系の業務が劇的に効率化できる**んじゃないかなーと思っております。