見出し画像

BizRobo!の「API」連携を使ってSlack投稿履歴をGET!

こんにちは。Tokoです。
RPAツールのAPI連携の仕方を見様見真似で勉強中です。
これまでSlackの投稿と出力値の取得をやったので、履歴GETもみておこうと思います。

◯slack apiでの設定(下準備)

まず、slack apiで設定する必要があります、方法は「投稿」と同じです。


↑覚え書の5,の[Scopes]のところだけ

スクリーンショット 2020-12-02 13.30.01


★「channels:history」もしくは
★「groups:history」←対象チャンネルがプライベートチャンネルの時
 になります。
一から設定せず既存のAppに追加してもできます。
※追加した場合でも7,の[Install your app]は必要です。

スクリーンショット 2020-12-02 13.30.56

◯Slackでの設定(下準備)

Slackでの設定も覚え書と同じです。
既存のAppで設定済チャンネルを対象にする場合、この設定は既済です。

◯「Rest Webサービス呼出」アクションの設定

BisRobo!の「REST Webサービス呼出」アクションの設定はSlack投稿と同じ手順です。

変更点はURLが「https://slack.com/api/conversations.history」になることと、リクエストを「GET」にすること。
パラメータは token  と channel を設定します。

投稿RESTウェb設定

出力値は「ブラウザにロード」。
この「REST Webサービス」アクションの設定だけで、履歴取得ロボ完成です。BizRobo!ブラウザを確認するとズラッと履歴データが並んでいます。
ロボ実行時間が1秒未満。あっという間すぎて実感がないです。

◯履歴データから「投稿者」「日時」「内容」を抽出するロボ

実際にこのロボを使うとすれば、取得した履歴をもとに何らかの作業をすることになります。そこで、キーとなりそうな「投稿者」「日時」「内容」を抽出するロボを作ってみました。

Slack履歴取得ロボットのコピー

ロボ前半の処理結果チェックについては↓こちらの記事。

◯いつものループアクションの作り方。

[for Each Item]ループをつくるところから書いていきます。
投稿データがはいっている場所を確認。→[messages]の中。

ループ作成


[messages]を右クリックしてループ→アイテム
これで[for Each Item](ループアクション)自動生成。
これはDSお決まりの方法です。

◯日時を抽出 UNIXタイムスタンプがあらわれた!

投稿データの中に日付形式のものはありませんが、ts項目の値が「降順」になっているのがわかります。ts=TimeStampと目星をつけて調べ、この値が「UNIXタイムスタンプ」であるとわかりました。

チャユーザー

ts項目の値を数値タイプの変数「ts」に格納して
「UNIXタイムスタンプ」を変換→ 日付タイプ変数「Time」に受け渡します。変換式は(UNIXタイムスタンプ+ 32400) / 86400 + 25569
エクセルの日付から変換 で 日付表示できました。

日付変換ャ

◯投稿者の抽出 IDはリスト変換でお名前に。

投稿者はuserの値にIDで返ってきています。これを変数に抽出します。
IDのままでは不便なのでリスト変換をつかって名前に置き換えます。
※IDと名前はSlackの投稿画面で照合。

ユーザー取得


リストチャ

通常ならこの後、投稿内容にあたるtextの値を抽出すれば完成なのですが、
この時点でデバッグしたところエラーがでました。
確認すると、user項目がない投稿ブロックがあります。

◯Incoming Webhook投稿ブロックのJsonコード

ユーザーャ

user項目がないブロックは Incoming Webhookを使った投稿でした。。。。API と  Webhook は同意ではないけれどSlackに投稿するという挙動は同じ。。とSlack投稿の記事には書きましたが、「同じなのは表面上」でJsonコードをみるとちゃんと違う、それがこうして見えるのは面白いです。

◯トライステップして完成!

今回はトライステップで対応します。

分岐チャ

一軸のUser抽出でuser項目がない場合→エラー設定でトライステップへ
二軸は投稿者名はWebhookの名前「テストさん」を変数に直打ち

投稿内容のtext項目階層も違うのでそれぞれの軸上で抽出して合流。
これで完成です。

完成チャ

抽出しただけとはいえ ロボット実行時間 1.86秒!!!でした。

◯まとめ

■slack apiは用途にあわせてScopeを設定。
■「REST webサービス呼出」アクションのURL設定も用途によって変わる。
■出力値に返ったJsonコードの中に投稿データがはいっている。
■日時はUNIXタイムスタンプ、でもコンバータで日付スタイルにできます。
■Slack画面では同じでも、Jsonの中では違いがわかるIncoming Webhook。
■BizRobo!ブラウザはJsonコードでもいつもと同じ操作感。
■DSロボ高速!

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Slack apiを使ってみる記事。6つ目になりました。
他記事へのリンクが多くなり読みにくい上、日頃DSを使われている方にはご周知の内容ですし、初めてDSを触る方には端折りが多い内容です。
私はBizRobo!なら操作は一通りやりますが、スマートには遠くやればやるほど奥が深く、使ったことがない機能については説明を読んでもその状況がよくわからないというレベルです。
そういった中で、コレ何に使うの?と思っていたアクションの一つが「RESTWebサービス呼出」でした。7月にWebinerを受講して「APIで使うのか!」と知り、つづけてほかのAPI講座を3つ受けて輪郭がつかめたタイミングでアシロボのAPIのハンズオンがあり。
よし。BizRobo!で自分の頭で考えながらやってみようと思った次第です。
noteはバラバラになる思考をまとめるために書きました。

私自身ほかのRPAツールの使い方がいつも気になるので、BizRobo!を使われていないRPAの方がご覧になって画面の雰囲気が伝わるよう意図はしたつもりですが、うまく伝えられたかどうか。
読んでくださって本当にありがとうございました。

この記事が気に入ったらサポートをしてみませんか?