Salesforce連携系アクティビティのススメ-認証について-①

![Salesforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923177/295cba35-85cf-c242-7c6a-a723a9944d78.png)


<p>今回ご紹介するのは、SalesforceというCRMプラットフォームに連携するアクティビティについてです。

なぜ、Salesforceかというと、個人的な話になってしまうのですが、Salesforce認定アドミンを4年前ほどに取得し(更新していないので資格保有者とは言えない）、シス管として仕事もしていたこともあったので、RPA開発関係へ転身してからも何かとSaleforceとの連携関連にご縁が絶えないこともあり記事にしてみました。<br><br>

結構、多くの企業さんでSalesforceを導入していると思います。Salesforce自体にもフローといったRPAっぽい機能がありますが（近々、プロセスビルダーやワークフローがなくなるそうです）、あくまでもSalesforceというプラットフォーム上で動くものになり、それが必ずしも既存の基幹システムのデータをSalesforceへ移したり、営業活動で得た手元の大量データを自動的にSalesforceへ登録したりといった手間を解消してくれるものではありません。（ちなみに、Orchestratorという機能が近々Salesforceに登場するそうですね！）<br><br>


データローダというSQOLを利用した大量データ投入も可能ですが、毎回人がQueryを作って、標準的なセキュリティーを敷く企業様では、何段階かのSandboxでのデータ投入検証といったフローを踏んでから本番へデータ投入・改変などを行っていると思います。変更前後の証跡取得と前後のデータ変更の差異の確認など大量データ投入と一言でいっても企業のセキュリティー事情によっては相応の舞台裏の手間が生じます。これが不定期で頻度が少なければ良いですが、定常となるとさすがにヒューマンエラーも含め、「やってらんねー！」と星一徹になってるシス管は多いと思います。<br><br>


<b>そこでRPAの出番です！</b><br><br>


もちろん、UiPath StudioにもSalesforce連携系のアクティビティが充実しております。</br></br>

まずは<b>皆様ご安心のオフィシャルアクティビティ！</b>ですね<br></p>

![UiPathActivity.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923177/2bf61eac-c4ed-b96a-cda1-4635f38929cf.png)


<p>基本的にはSalesforceスコープの中でレコード追加・削除・更新といったアクティビティを配置したりしてSalesforce内のデータを操作する仕様になっております。
オフィシャルに限りませんが、外部プラットフォームとの連携には接続認証に必要な手続きがあります。</p>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923177/eb8f46ec-142c-8f00-941e-268859cbab18.png)


<p>サーバーはお使いのSalesforceが本番環境なのかSandboxかによってドロップボックス内の値を選択します。ユーザー名やパスワードはロボット用にアカウントを払い出してもらうか、操作対象データに編集権限のあるユーザー/シス管のものなど、所属企業のセキュリティーや監査事情に合わせて設定してください。個人的にオススメなのはロボット用のアカウントを払い出しておくことでミスや事故が起きた場合、ロボットによるものなのか、人によるものなのかが明らかになりますし原因究明にも役立つと思います。また、Sandboxでも本番でも存在するアカウントしておくと良いでしょう<br><br>


コンシューマーキー/コンシューマーシクレット、セキュリティートークンはSalesforceシステム管理者にお問い合わせしていただいて入力/設定していただくのですが…<br><br>

この辺り、私も自社で初めてRPAとSalesforce連携をした際、何度も会社のSalesforceアドミンから問い合わせがあって手続きですので…（当時、英語のドキュメントしかなかったのもあり）、もしかしたら皆さんの会社のSalesforceアドミンさんも「コンシューマーキーって何ですか？！」と逆問い合わせを仕掛けてくるかもしれませんので、今回は認証について解説してみます。（なんだか、RPAというよりSalesforceの話になってしまいますね:sweat_smile:）</p><br><br>

<h4>Salesforce側で準備していただくこと</h4><br><br>
<p>オフィシャルのドキュメントの画像を参照しております。
まずは、アプリケーション連携するための端末のIPを調べます。<br><br>
<b>ステップ①</b><br>
Salesforceにログインし、設定よりNetworkを検索し、NetworkAccessをクリックしてください<br></p>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923177/27ef40f3-1fd6-33c1-527a-a984fd22680d.png)


<p><br>
<b>ステップ②</b>
<br>
NetworkAcces一覧に実際にロボット稼働予定の端末のIPが入っているか確認してください。⇒入っていたら、ステップ⑤の作業は不要
（IPの確認方法は　googleでshow my ipと検索するか、コマンドでipconfigと打って検索してください）<br>
<b>ステップ③</b>
<br>SalesforceとUiPathを連携するためにアプリケーションを作成します

App managerを検索しApp Managerを開いて、Connectをクリックしてください。</p>
<br>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923177/cfe94c13-75d5-b333-e215-56d326367245.png)

<br>
<p>Connect App Name を記入します。UiPathと連携しているアプリケーション名になるので、分かりやすい名前にしましょう！
メールアドレスはロボットがログインするためのメールアドレスにしてください（＝Salesforce スコープに設定するアドレス）。

OAuthSetting にチェックをいれます。　

コールバックURLは<b>「https://localhost:8080」</b>とし、<b>Full Access</b>を選択し保存してください。<br>

<b>ステップ④</b>
保存後、ページの中央に消費者キーと消費者秘密が記載されます。
これが、Salesforceスコープで必要なコンシューマーキーとコンシューマーシークレットの値になります！

<br><b>ステップ⑤</b>
ステップ②でIPがある場合は本操作は不要です。
そうでない場合は、ステップ③で設定したアカウントのユーザーセッティングでSecurity Token（セキュリティートークン）をリセットを押し、新しいセキュリティートークンを取得します。
※ユーザーによっては「私のセキュリティートークンをリセット」が表示されていない場合もあるので、「ログイン IP アドレスの制限」を削除するか、またはユーザを「ログイン IP アドレスの制限」がリストされていないプロファイルに変更します。

<b>これで、貴社のSalesforceアドミンとの連携もばっちりですね</b>:relaxed:
<br><br>

<h4>次章に向けて</h4><br><br>

今回はSalesforce側の準備について書きました。次章では公式や公式が出る前に私が実際に使っていた準公式のSalesforce連携系アクティビティについて書きたいと思いますので、最後に公式アクティビティの良さについて、簡単に書かせてください。<br>

まずは、公式あくてぃビティは動作が安定しておりますね！<br>
準公式のアクティビティ数が多くて、初期のアクティビティあるあるですが、使い方が複雑（一つのアクティビティにプロパティー内容が多すぎ）です。データ操作は多岐にわたってできますが、その分Salesforceの構造なども熟知していないと扱いずらかったなぁ～<br>


なんて事を次章で書ければと思います！<br><br>

そこを考慮しますと、公式アクティビティはSalesforce上の通常のデータ操作に必要と思われるアクティビティが厳選されている点が良いですし、何よりもSalesforceスコープのプロパティがとても分かりやすいですね</p>