こんにちは!クレスコの吉田です。RPAやローコード製品、プロセスマイニングなどの業務効率化ソリューションを担当しています。UiPath Japan MVP2020-2022としても日々活動しています。
2023年7月に当社にてリリースしたUiPath×kintone連携アクティビティについて、概要や主要アクティビティ、ユースケースや便利なスニペットのご紹介など2回に分けて、情報をお届けします!
本記事では、UiPath×kintone連携アクティビティの概要や主要アクティビティを少しだけ技術的な話も交えてご紹介します。
Kintoneの概要やRPAとの組み合わせについては、以下の記事もご参照ください。
kintone × RPAを考える - CRESCO Tech Blog
目次
UiPathでkintoneの自動化が簡単に!UiPath×kintone連携アクティビティ|株式会社クレスコ (cresco.co.jp)
1. UiPath×kintone連携アクティビティとは
2. 主要なアクティビティのご紹介
3. UiPath×kintone連携アクティビティの作成秘話
1.UiPath×kintone連携アクティビティとは
サイボウズ株式会社が提供している、Webデータベース型の業務アプリ構築クラウドサービスであるkintoneを、UiPathから操作するための当社オリジナル共通部品(UiPathアクティビティパッケージ)です。
kintoneとUiPathを連携する方法として、最も一般的なものはブラウザでkintoneを開き、UiPathでそのブラウザ画面上のkintoneアプリを操作することです。この方法では、簡単にkintoneを使用した業務の自動化ができます。ただし、kintoneアプリ上で、レイアウト変更や、フィールドの追加、フィールド並び順の変更などを適用した際、UiPathでのkintone画面操作に失敗するケースがあります。SaaS製品で頻繁に画面レイアウトが更新されるたびに、RPAの自動化プロセスが失敗するケースに近いです。こうした場合、画面操作でなく、API経由でデータのやり取りができると安定します。
「UiPath×kintone連携アクティビティ」は、上記の点に着目し、画面操作ではなくkintone APIを活用してレコード情報の取得や更新を行う部品を用意しています。
また一般的にAPI操作によってデータのやりとりを行う際には、プログラミング知識が少なからず必要になるのですが、本アクティビティでは、プログラミング経験が少ない方でも扱えるよう、専用のアクティビティを用意しているのが特徴です。
本アクティビティを使用することで、「より安定的に、より簡単に、より短い時間で」kintoneとUiPathを連携し、更なる業務効率化を進めることが可能になります。
2.主要なアクティビティのご紹介
「UiPath×kintone連携アクティビティ」では、2つのプランを用意しています。
無料ですぐにご利用いただけるフリープランと、有償で販売しているスタンダードプランです。フリープランはUiPath Marketplaceからダウンロードいただけます。
kintoneConnector Activities - RPA Component | UiPath Marketplace
UiPath Marketplaceに公開しているため、UiPath Studio、またはStudioXの「パッケージを管理」画面からも直接皆様のプロジェクトにインストールいただけます。
以下に、主要なアクティビティを一部抜粋してご紹介します。
カテゴリー |
アクティビティ名 |
概要 |
フリープラン |
スタンダードプラン |
---|
共通 |
kintoneを使用 |
kintone環境への接続と認証設定を行います。 |
○ |
○ |
レコード |
レコードを取得する |
アプリIDとレコードIDを指定して特定レコードのデータを取得します。 |
○ |
○ |
レコード |
レコード一覧を取得する |
指定したアプリのレコード一覧を取得します。 |
○ |
○ |
レコード |
レコードを追加する |
アプリIDを指定してレコードを追加します。 |
ー |
○ |
レコード |
レコードを更新する |
アプリID、レコードIDを指定してレコードを更新します。 |
ー |
○ |
コメント |
レコードのコメント一覧を取得する |
アプリIDとレコードIDを指定してレコードのコメントを一括取得できます。 |
○ |
○ |
コメント |
レコードにコメントを追加する |
アプリIDとレコードIDを指定してレコードにコメントを追加します。 |
ー |
○ |
ステータス |
レコードのステータスを取得する |
指定したレコードのステータスを取得します。 |
○ |
○ |
ステータス |
レコードのステータスを更新する |
アプリIDとレコードIDを指定してレコードのステータスを更新します。 |
ー |
○ |
作業者 |
レコードの作業者を取得する |
指定したレコードの作業者を取得します。 |
○ |
○ |
作業者 |
レコードの作業者を更新する |
アプリIDとレコードIDを指定してレコードの作業者を更新します。 |
ー |
○ |
ファイル |
ファイルアップロード |
添付ファイルをアップロードします。 |
ー |
○ |
ファイル |
ファイルダウンロード |
kintone上から添付ファイルをダウンロードします。 |
ー |
○ |
監視トリガー |
レコードのステータスをチェックする |
レコードのステータスを監視し、指定したステータスを検知するとイベントを発生させます。 |
○ |
○ |
基本的に、kintoneから情報を取得する操作については、フリープランでもご利用いただけます。
一方kintoneへの登録操作、更新操作についてはスタンダードプランでのみご利用いただけます。
続いて、いくつかの主要なアクティビティをご紹介します。
2.1.「kintoneを使用」アクティビティ
kintone環境への接続と認証設定を行うアクティビティです。kintoneの操作をするときに最初に配置し、接続先のサブドメイン(URL)や、接続するユーザーの認証を行います。
UiPathでは、Excel操作をするときに、「Excelファイルを使用」アクティビティを最初に配置し、操作対象のExcelファイルを指定します。そして同アクティビティの中に、データの読み書きやマクロの実行などを行うアクティビティを配置していきます。これと同じような使い勝手でkintoneの操作を行っていただけます。
「kintoneを使用」アクティビティでは、プロパティにて「サブドメイン(https://{サブドメイン}.cybozu.com/)」や、kintoneのログイン画面で普段入力している「ログイン名」、「パスワード」をプロパティとして設定するだけで簡単に接続することができます。なお、フリープランではゲストスペースに対応しておりませんが、スタンダードプランではゲストスペースにも対応しています。
2.2.「レコード一覧を取得」アクティビティ
アプリIDを指定し、対象のアプリ内のレコード一覧を取得します。取得するレコード数の上限設定(例えば最大100件)や並べ替え順の設定、[利用開始日]フィールドが本日以降のレコードのみといった条件設定を行うことが可能です。取得したデータはDataTable型でも出力しているため、そのままExcelにレコード一覧として書き出すことが可能です。
2.3.「レコードのステータスをチェックする」アクティビティ
指定したkintoneアプリの特定ステータスを監視し、検出したら一連の自動化プロセスを実行するアクティビティです。プロセス管理を有効にしたkintoneアプリで利用可能です。
ロボットの出番だよ!というステータスを作っておけば、ロボットが自動的に処理してくれます。
少し専門的な話になりますが、「UiPath×kintone連携アクティビティ」は画面操作を行わないため、バックグラウンドプロセスで動作させることが可能です。
朝、業務を開始したら、kintone監視プロセスをバックグラウンドプロセスとして起動しておきます。これでkintoneアプリの常駐監視ができます。監視中に特定ステータスのレコードを発見したら、自動的に後続の自動化処理を実施して、また常駐監視モードに戻ります。ARでも上記のような自動化プロセスが作れるので、ぜひ活用いただきたいおすすめの機能です!
2.4.「ファイルアップロード」アクティビティ
kintone上の特定のフィールドに、添付ファイルをアップロードするアクティビティです。
①アプリID、②レコードID、③添付ファイルのフィールドコード、④アップロード対象のファイルパスの4プロパティを指定するだけで、ファイルをアップロードすることができます。
頻繁にkintoneにファイルをアップロードする作業を実施している場合、かなりの効率化が期待できるのでは、と個人的には感じています。
また、逆方向のファイルダウンロードも用意しており、同様の操作感でご使用いただけます。
※本アクティビティは、スタンダードプランでのみ提供しています。
3.UiPath×kintone連携アクティビティの作成秘話
本ブログはTech Blogですので、少しだけ技術的な話として、本アクティビティの裏側の話をします。
3.1.開発技術・フレームワーク等について
本アクティビティは、UiPath上で動作するカスタムアクティビティです。
UiPathカスタムアクティビティは、いくつかの方法で開発することができます。
①UiPath Studioで作成したワークフローを、ライブラリとしてパッケージ化して公開する
②Visual Studioから、C#を利用して専用のプロジェクトを作成し、パッケージ化して公開する
今回は②を採用しています。UiPath では、 Activity Creatorという、Visual Studio用拡張機能が用意されており、それを使用すると、独自のカスタムアクティビティを比較的簡単に作成することができます。本アクティビティ開発においても、Activity Creatorを使用しています。
開発メンバーは当初UiPathの知識がほとんどないC#のエンジニアのみで始めたのですが、比較的早期にスキル習得でき、バリバリ開発できるようになりました。Microsoft系アプリエンジニアは参入しやすいと思います。
3.2.アクティビティの設計について
本記事では、一例として、「レコード一覧を取得」アクティビティの設計について、少しお話ししたいと思います。
3.2.1.一度に取得できるレコード数
「レコード一覧を取得」アクティビティは内部処理として、以下のkintone APIを呼び出しています。
https://cybozu.dev/ja/kintone/docs/rest-api/records/get-records/
上記APIの説明ページで、以下の一文が書かれています。
一度に取得できるレコードは、500 件までです。
つまり、単純なAPIのラッパー(kintone APIをUiPath Activity経由で呼べるようにしたもの)として作成した場合、仮に5000件のレコードデータを取得したい場合は、以下のような処理をワークフロー内で組まないといけません。
①500件取得→②offsetを指定して500件取得し、元のレコードデータにマージ→③ ②を繰り返し、5000件到達したら処理終了
ただkintoneのデータを取得したいだけなのに、オフセットの概念理解や、レコードデータのマージ処理など、特有の知識を要求されます。私たちが特にこのアクティビティを使ってほしいのは、kintoneで業務改善を行っていたり、本業の傍らで自動化に取り組んでいたりする市民開発者です。
ということで、本アクティビティでは、上記①~③の処理を、アクティビティ側でいい感じにやってくれるように設計しました。使用者側は、500件のことを気にせずにレコードデータを取得することができます。
3.2.2.クエリの記述に関して
もう一か所、悩ましい個所がありました。「クエリ」の記述についてです。
取得するレコードの条件を絞り込むためには、以下のように「クエリ」と呼ばれる文字列を記述し、APIで呼び出す必要があります。
-- フィールドコードが「LimitDay」のフィールドの値が「今日」より前 |
-- フィールドコードが「Status」のフィールドの値に「完了」を含まない |
LimitDay < TODAY() and Status not in ("完了"){ |
これらを書くためには、以下サイボウズ社公式URLよりクエリの書き方を学んでいただく必要があります。
https://cybozu.dev/ja/kintone/docs/overview/query/
ちょっとした構文ミスや””の誤用でエラーが発生してしまうので、使用者が構文や””などを意識せずに条件を設定できるように何か工夫できないか、ということで、チームで検討しました。
その過程で見つけたのが、UiPath公式の「データテーブルをフィルター」アクティビティです。データテーブルの特定の列の値をもとに条件設定し、データテーブルのアイテムをフィルターするアクティビティです。
これと同じような使い方ができれば、多少は使用者の利便性やエラー発生リスクを減らせるのではということで、開発に取り掛かりました。出来上がったのが以下となります。
※本ウィザード機能は現時点ではスタンダードプランでのみ提供しています。フリープランへの適用も検討しておりますが、時期は未定です。
このように、少しでも市民開発者の皆さんに使いやすくご利用いただけるよう、日々工夫を重ねています。
本記事は以上となります。本アクティビティについて少しでも知っていただけたら嬉しいです。
次の記事では、どのような場面で活用することができるのか、ユースケース毎に使い方をご説明します。
UiPathでkintoneの自動化が簡単に!UiPath×kintone連携アクティビティ|株式会社クレスコ (cresco.co.jp)