わくわくtech

RPAやWEB制作などのテクノロジーにワクワクするサイト☆

RPA

UiPathでチャットワークのメッセージを取得してみた【xamlファイル付き】

投稿日:

チャットワークAPIを用いてチャットワークのメッセージを取得する方法を紹介します。

はじめに

本記事は、以下の記事に続いた内容となっております。

必要に応じてご覧ください。

記事内容

  • チャットワークAPIトークンの取得
  • ルームIDの確認
  • HTTPリクエストアクティビティのインストール
  • メッセージ送信設定

ワークフロー完成図

今回実装するのは以下のようなワークフローになります。

このワークフローでは、チャットワークのメッセージを取得してデータテーブルに格納、Excelファイルとして出力します。

事前準備

APIトークンの取得とメッセージを取得するルームIDの確認をしてください。 

分からない方はこちらをご覧ください。

私が実装にあたって使用するトークンIDとルームIDは以下になります。

 

実装1(HTTPリクエストアクティビティ)

メッセージ取得機能をUiPathで実装していきます。  

HTTPリクエストアクティビティの設定

まずはHTTPリクエストアクティビティの設定を行います。

このアクティビティが見つからない場合、パッケージのインストールが必要です。インストール方法についてはこちらをご覧ください。

『HTTPリクエスト』アクティビティをデザイナーパネルにドロップすると、『HTTPリクエストウィザード』が開かれます。

 

送信機能同様、ウィザード内での設定は行いませんので『OK』をクリックして閉じてください。

 

設定項目は『パラメータ』『ヘッダー』『エンドポイント』『メソッド』、『結果』の5つです。

送信機能の時より『結果』項目が多いことに注意してください。

それぞれ設定していきます。

パラメータ

以下のようにパラメータを設定します。

force・・・無くてもかまいません。値を「1」とした場合、未取得にかかわらず直前100件を取得します。「0」(既定値)の場合、前回の取得との差分のみ取得します。すなわち、一度この処理で取得したものは取得されない。 

ヘッダー

送信同様、APIトークンを以下のように設定します。

X-ChatWorkToken(必須)・・・事前準備で取得したAPIトークンを設定します。

エンドポイント

エンドポイントを以下のように設定します。送信機能の時と同様です。

【取得先ルームID】は事前準備で確認したものです。

“https://api.chatwork.com/v2/rooms/【取得先ルームID】/messages”

メソッド

メソッドは『GET』に設定します。

結果

取得された情報を格納するString型変数を設定します。

今回は「strResult」という変数とします。

 

出力確認

変数の中を確認するため、今回はテキストファイルに出力します。

実行

ここで実行してみます。

設定値が正しく、通信に成功した場合以下のようにテキストファイルが生成されます。

開いてみると、

 

なんじゃこりゃ。と思った方が多いかと思います。

APIはこのような形式(JSON)でデータのやり取りを行っています。

1つのメッセージJSONには、投稿者や投稿日時、本文等のメッセージに含まれる情報が含まれています。

 

この中から必要な情報だけ取り出す作業を行います。

心が折れそうな方も多いかと思いますが、マネしていただければ動くものはできますし、記事内のxamlもダウンロードできますので

最後までご覧頂きたく思います。

実装2(データ成形・データテーブル作成)

ここからの作業について、詳細な説明は省略させていただきます。

データ保持用データテーブル作成

『データテーブルを構築』アクティビティを「HTTPリクエスト」アクティビティの上に配置します。

データテーブル変数名は『dtMessages』としました。

取得結果をこのデータテーブルに格納していきます。

 

本記事では、メッセージのJSONデータから投稿者名メッセージを取得しようと思います。

そのためテーブルカラムは「name(String)」、「message(String)」としました。

メッセージごとに分割(Json配列化)

『Json配列をデシリアライズ』アクティビティを「HTTPリクエスト」の下に配置します。

『入力』には「HTTP」リクエストの結果である「strResult」を設定。

『出力』には新たな変数(Json配列型)「jsonArrayResult」を設定します。

この際、出力テキストフィールドで「Ctrl+K」のショートカットキーで変数を生成することをお勧めします。

この時生成される型は「JArray」という型です。

 

この処理では、Jsonをメッセージごとに分割、配列化しています。

メッセージ毎の処理(情報取得)

続いて、メッセージ(行)ごとに情報を取得します。

配列の各行に対いて処理を行うので、『繰り返し(コレクションの各要素)』を使用します。

『要素(エイリアス名)』「json」とし、『コレクション』には「jsonArrayResult」を設定します。

さらに、『TypeArgument』「Newtonsoft_Json.Linq.JObject」を指定します。ドロップダウンから見つかるはずです。

 

メッセージを取得

本体の中に『代入』を入れます。

左辺には新たに変数「message(String)」を作成します。

代入する右辺は

 

次のように設定します。

System.Text.RegularExpressions.Regex.Unescape(json.GetValue("body").ToString.Replace("\","CrPa")).Replace("CrPa","\")

「json」の部分はエイリアス名で、それ以外の部分はとりあえずこのまま使用してください。

 

簡単に説明すると、Jsonの中からメッセージ部分を取り出し、エンコード処理をしています。

投稿者を取得

『Jsonをデシリアライズ』アクティビティを配置します。

『入力』には「json.GetValue(“account”).ToString」を設定。

「json」の部分はエイリアス名です。

『出力』には新たな変数「jObjectAccount(JObject)」を設定します。

『代入』を入れます。

左辺には新たに変数「name(String)」を作成します。

右辺は次のように設定します。

System.Text.RegularExpressions.Regex.Unescape(jObjectAccount.GetValue("name").ToString)

データテーブルに追加

変数「message」にメッセージ、変数「name」に投稿者名が格納されています。

これをデータテーブルに追加します。

『データ行を追加』アクティビティを配置します。

追加するデータテーブルは「dtMessages」

追加するデータは「{name,message}」です。

これでデータテーブルに追加されます。

実装3(Excelファイルで出力)

作成したデータテーブルからExcelに出力します。

『Excelアプリケーションスコープ』「繰り返し」の下に配置します。

先ほどまで作業していた「繰り返し」の中ではありません。

ファイル名は「Messages.xlsx」とします。

『範囲に書き込む』「Excelアプリケーションスコープ」の中に配置します。

入力データテーブルは「dtMessages」です

また、「ヘッダーを追加」オプションを有効にします。

実行

以下のようなワークフローが完成します。

実行します。

投稿者とメッセージの取得ができました。

記事内で使用したxamlファイル

記事で使用したファイル(xaml+projectファイル)をダウンロードしてお使いいただけます。

以下の注意事項をよく読み、ご納得の上でダウンロードしてください。

注意事項

  • xamlファイルのダウンロードにより何かしらの不具合が生じた場合、一切の責任を負いません。
  • 本記事で使用したUiPathStudioのバージョンは2019.4.2になります。お使いのStudioのバージョンが異なる場合、ダウンロードするのではなく、ご自身の環境で作成されることを強くお勧めします。
  • 「UiPath.Web.Activities」のパッケージがインストールされていな状態ですと、HTTPリクエストアクティビティは表示されません。

終わりに

記事に対する意見コメント、ワークフローについての不明点等は記事へのコメントもしくはTwitterにて私ハイダックが承ります。

また、「こんな記事書いてほしい」、「こんな処理自動化してみてほしい」等の記事案自動化相談も大変うれしく思いますので、気軽にご連絡ください

-RPA
-, , , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

RPAって何だろう?

私はRPAロボ開発に携わるお仕事をしています。 なのでしょっちゅう「RPAって何ですか?」と聞かれます。 RPAは、日本のビジネス界で2015年頃からじわじわと有名になってきた言葉ではありますが、まだ …

UiPathでチャットワークにメッセージを送信してみた【xamlファイル付き】

「RPAを使ってメールやSNS、チャットツールにメッセージを送信したい!」 そんな場面、少なくないですよね。 そんなとき、ブラウザを開いて、画面遷移して、「文字を入力」して、送信ボタンを「クリック」し …

【AI&RPAを体験】誰でも利用できるAIツール「プロセス・ディスカバリー・ツール」を使ってみた(1)

こんにちは!ぽんすです! 面白いAIツールをBlue Prismさんに教えてもらったので、使い方解説記事を書いてみることにしました。 目次1 プロセス・ディスカバリー・ツールとは?2 実際に使ってみよ …

【AI&RPAを体験】誰でも利用できるAIツール「プロセス・ディスカバリー・ツール」を使ってみた(3)

実践編(2)です。 今回の記事は2つ目の記事の続きです。 あなたがRPA化を検討しているその業務がどのくらい自動化に適してるか?の値を出したり、自動化した際の削減工数やコストを算出したり、グラフを出し …

【AI&RPAを体験】誰でも利用できるAIツール「プロセス・ディスカバリー・ツール」を使ってみた(2)

実践編です♬ さて、プロセス・ディスカバリー・ツールの登録が完了して、デジタルワーカーからメールが届きましたでしょうか?  わくわくtech【AI&RPAを体験】誰でも利用できるAI …