Integromatでスプレッドシートからツイッターへ自動投稿するフローを構築してみた。

最近Integromatにハマっているので、実際にIntegromatを使って動かしているフローを書き留めていきたいと思います。

#Integromatについて
様々なWebサービスを連携させる事ができるiPaaSの1つです。これまでZapierやIFTTTなどいくつかのiPaaSを触ってきましたが、個人的にはとても使いやすいです。特にフィルタや条件分岐が細かく設定できる点と、UIが気に入っています。
![main_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/8c9da8f0-21d4-6ef9-8f60-3b27930aae7c.png)

Integromatはとても便利で使っていてテンションが上がるUIなのですが、日本語のドキュメントが少なく日本ではあまり活用されていない様子です。ので、iPaaSや自動化に興味のある方がIntegromatに興味を持って頂けるように少しずつIntegromatの記事を書いていきたいと思います。

##紹介するフローについて
今回は、スプレッドシートに書き溜めた投稿をツイッターに自動投稿するフローを紹介していきたいと思います。この自動化自体はツイッター専用のBOTツールを使えば簡単に実現できるのですが、以下の点でIntegromatを使います。

<b>① ツイッターBOTもある程度までいくと有料プランが必要になります。Integromatもツイッター投稿連携を使用する際には有料プラン(9$/月)に加入する必要がありますが、Integromatが優位なところは同じ金額で他にも様々な自動化フローが構築できる点でしょう。
② また、運用する人(ツイート内容を考える人)はスプレッドーシートだけ更新すれば良いという点。
③ 最後に、Integromatを使うとモチベーションが上がるという点です。(個人的な意見です)</b>

##フローの流れ
1.スプレッドシートに書き溜めたツイートからツイート日の入っていない記事の一覧を取得
2.取得した一覧を配列に変換
3.配列の中からランダムに記事を取得
4.ツイッターに投稿
5.投稿日をスプレッドシートに記入
これをintervalを使って定時実行しています。
![image_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/17665d32-fddf-df83-eec1-2c413679d2c8.png)
完成形はこんな感じです。

##実際の作成手順
###事前準備: ツイッターの原稿を記載したGoogleスプレッドシートを用意する
今回はツイート日,ツイート,リンク先URLの３つの列を用意しました。
![image_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/4eefa096-ad00-1c3e-cc9d-738fd14c523a.png)


###1.スプレッドシートに書き溜めたツイートからツイート日の入っていない記事の一覧を取得
まずは、Google Sheetのモジュールを追加します。
![image_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/6837561b-3466-eb4f-1f94-89ba100a88ea.png)

事前準備で用意したスプレッドシートを連携します。
ここでツイート日が Does not exist(存在しない)かつツイートがExists(存在する)もので抽出します。
![image_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/dabc0a58-3f39-5799-a193-8eef63ae8cf3.png)

###2.取得した一覧を配列に変換
Array aggregatorで一覧を配列に変換しています。
![image_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/a8679297-61f0-5def-e8c6-9bdec6ac04e1.png)

この時に取得する列を選択できるので、Row number,ツイート(B),リンク先URL(C)を選択しておきます。
![image_5_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/fe558c80-a551-151f-6710-960966c9b7ef.png)

生成される配列は以下のようになります。
![image_5_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/11e25144-2a93-36b7-8b2a-ce6409974b8b.png)

###3.配列の中からランダムに記事を取得
記事の一覧を配列化できましたので、次はその中からランダムで1記事取得します。ここは少しプログラムの知識が必要になりますが、1~総数の間でランダム値を生成し、そのキーを持つ値を取得しています。
Integromatのrandom関数は0以上1未満のランダムな数を返すため、このような形になります。
※わからない方は詳しい方に聞くか、以下の画像の通りに作成すればできます！
![image_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/21966c28-22b3-57ec-7a24-fc87a7687fc0.png)

###4.ツイッターに投稿
ここまで来れば後は簡単ですね。ツイッターのモジュールを追加し、ツイッター投稿を行います。
リンク先URLはifを使って、あれば入れるみたいな事をしています。
![image_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/484c6aa8-d46e-2ae9-dd7c-89f03bf7cc3b.png)

###5.投稿日をスプレッドシートに記入
最後に、配列データに渡してあったRow numberを使用して、スプレッドシートのツイート日(A列)に今の日付を記入しています。
これを行っておくことで、同じツイートがなんども投稿される事を防いでいます。
![image_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/d86f1ded-109d-c6d0-b603-b19f2e1502fc.png)


以上が「スプレッドシートに書き溜めた投稿をツイッターに自動投稿するフロー」の構築手順になります。少しでもプラグラム経験がある方であれば、簡単に構築出来るのではないでしょうか。

#最後に
Integromatはフィルター機能もありますので、例えばツイートの一覧を抽出した際に1件も無ければ処理を停止したり、条件分岐を行って一度ツイート日をクリアしたりと様々な処理が可能になっています(現在実運用ではそうしているので今後の記事で紹介したいと思います)。

Integromatは使い始めたばかりなので、もっと良い方法があるよという場合は是非教えて頂けると嬉しいです。