2019年5月8日チャットワークAPIを用いてチャットワークのメッセージを取得する方法を紹介します。終わりにはじめに本記事は、以下の記事に続いた内容となっております。必要に応じてご覧ください。「RPAを使ってメールやSNS、チャットツールにメッセージを送信したい!」そんな場面、少なくないですよね。今回実装するのは以下のようなワークフローになります。このワークフローでは、チャットワークのメッセージを取得してデータテーブルに格納、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)」を作成します。右辺は次のように設定します。変数「message」にメッセージ、変数「name」に投稿者名が格納されています。これをデータテーブルに追加します。『データ行を追加』アクティビティを配置します。追加するデータテーブルは「dtMessages」。追加するデータは「{name,message}」です。これでデータテーブルに追加されます。実装3(Excelファイルで出力)作成したデータテーブルからExcelに出力します。『Excelアプリケーションスコープ』を「繰り返し」の下に配置します。先ほどまで作業していた「繰り返し」の中ではありません。ファイル名は「Messages.xlsx」とします。『範囲に書き込む』を「Excelアプリケーションスコープ」の中に配置します。入力データテーブルは「dtMessages」です。「ヘッダーを追加」オプションを有効にします。以下のようなワークフローが完成します。投稿者とメッセージの取得ができました。記事内で使用したxamlファイル記事で使用したファイル(xaml+projectファイル)をダウンロードしてお使いいただけます。以下の注意事項をよく読み、ご納得の上でダウンロードしてください。KBDownload注意事項xamlファイルのダウンロードにより何かしらの不具合が生じた場合、一切の責任を負いません。本記事で使用したUiPathStudioのバージョンは2019.4.2になります。お使いのStudioのバージョンが異なる場合、ダウンロードするのではなく、ご自身の環境で作成されることを強くお勧めします。「UiPath.Web.Activities」のパッケージがインストールされていな状態ですと、HTTPリクエストアクティビティは表示されません。終わりに記事に対する意見やコメント、ワークフローについての不明点等は記事へのコメントもしくはTwitterにて私ハイダックが承ります。「こんな記事書いてほしい」、「こんな処理自動化してみてほしい」等の記事案や自動化相談も大変うれしく思いますので、気軽にご連絡ください。Hiduacハイダックと申します。仕事の傍らRPAやWeb開発を中心に勉強・発信しています。発信は本ブログとTwitterがメインです。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。関連記事RPAって何だろう?私はRPAロボ開発に携わるお仕事をしています。「RPAって何ですか?」と聞かれます。Prismさんに教えてもらったので、使い方解説記事を書いてみることにしました。そんな場面、少なくないですよね。...【AI&RPAを体験】誰でも利用できるAIツール「プロセス・ディスカバリー・ツール」を使ってみた(3)実践編(2)です。今回の記事は2つ目の記事の続きです。