UiPathでSalesforceの特定の項目を更新する。

この記事は GMOアドマーケティング Advent Calendar 2020 21日目の記事です。

皆さんこんにちは。
広告配信システムの管理画面開発と全社業務自動化のRPA開発を担当してるR.Aです。

何度かUiPathの使用方法やロボット作成について執筆をおこなって来ましたが、今回はスプレッドシートのバックグランド取得・APIを使用してSalesforceのOpportunityテーブルを更新するロボットについて説明したいと思います。
社内では、営業管理・顧客管理のためSalesforceを使用していますが、フェーズ管理で更新を行う時に一つ一つログインを行い、更新を行わないといけないためとても負担となっておりました。
そこで今回はスプレッドシートで更新したいものを記述し、その情報に沿ってフェーズ(Opportunityテーブル)を更新するロボットを作成いたします。

1、スプレッドシートから実行する項目を取得する

まず、Salesforce管理用シートを以下のような内容で用意いたします。

①スプレッドシートにアクセスする為のパッケージをインストールする。
パッケージ管理から検索項目に「gsuite」と検索を行い、UiPath.Gsuite.Activitiesをインストールします。

②シート情報を取得する為、GSuite Application Scopeを設定する。
インストールが完了するとアクティビティ一覧の中にGsuite関連のアクティビティがあるため、まずGSuite Application Scopeをセットし、アカウント情報を入力します。
今回はサービスアカウントを使用しますので、対象のキーを設定いたしました。キーの取得方法については以下を参照ください。
https://cloud.google.com/blog/ja/products/gcp/help-keep-your-google-cloud-service-account-keys-safe
③シート情報を取得する
GSuite Application Scopeの中にはスプレッドシートを読み込むアクティビティ「Read Range」を挿入いたします。
スプレッドシートIDには添付のように対象シートのURLのID部分をコピーし、入力します。シート名・範囲にもそれぞれ値を挿入します。

以上でシート情報が取得出来るようになりました。実行を行うと返却テーブルにスプレッドシートの値が格納されています。

2、SalesforceのOpportunityテーブルを更新する

①1行ずつ実行させる。
まずは、先ほどスプレッドシートで取得した返却値がDataTableのため行数分繰り返すFor Each Rowアクティビティ(繰り返し)を挿入します。
ここに先ほどの返却値read_tableをセットいたします。これで1行ずつ処理を行うようになります。

②Salesforceにアクセスする為のパッケージをインストールする。
先ほどと同様にSalesforceをAPIで実行する為に、パッケージのインストールを行います。
パッケージ管理から検索項目に「UiPathTeam.Salesforce」と検索を行い、対象のアクティビティをインストールいたします。

③Salesforceの値を更新する。
アクティビティにSalesforceのアクティビティが追加されている為、DesignerパネルにSalesforce Application Scopeをドロップいたします。
ドロップしたアクティビティに、tokenやID、パスワードを入力いたします。ConsumerKeyやConsumerSecretについては以下を参考に発行いたします。
https://help.salesforce.com/articleView?id=connected_app_create_api_integration.htm&type=5

tokenなどを設定できたら左上にあるTest Connectionをクリックします。うまく接続できる場合、以下のようにVailld Connectionと表示されます。

接続が完了したらSalesforce Application Scope内にGet Data Wizardアクティビティをドロップし、更新するOpportunityを取得します。

Opportunityに対してスプレッドシートの検索条件を元に対象のOpportunityテーブルを取得しています。
 
対象のOpportunityテーブルがある場合、同じくDataTable型で返却される為、返却される行数が1行の時値を更新するようにいたします。
テーブルの更新には、Update Custom Objectアクティビティを使用します。
対象デーブルに「Opportunity」を選択し、今回更新したいフェーズの値を設定いたします。

以上で設定・作成は完了になります。試しに実行を行うとフェーズ情報が無事更新されました。

3、まとめ

駆け足となってしまいましたが、実際に使用できるロボットを作成できました。検索項目が無かったり、対象のOpportunityテーブルが無い場合などの処理は省略いたしましたが、作成する事でより安定性の高いロボットを作成出来るかと思います。
また、Opportunityテーブル以外も更新も出来るのでかなり汎用性があるかと思います。

明日は、chi1kuwaさんによる「Salesforceとスプレッドシートを連携してレポートをGASで自動整形できるようにしてみた」です。
引き続き、GMOアドマーケティング Advent Calendar 2020 をお楽しみください!

■エンジニア採用ページ ~福利厚生や各種制度のご案内はこちら~
https://www.gmo-ap.jp/engineer/

■noteページ ~ブログや採用、イベント情報を公開中!~
https://note.gmo-ap.jp/