[Salesforce®初心者でもできる!UiPathによるオペレーションの自動化] Vol.9

Salesforce-main

ユーザ(User)の操作

前回は「商談の操作」に関するワークフローの作り方をお届けしました。もし見逃したという方は「商談(Opportunity)の操作」も併せてご覧ください。

プロジェクトチームの立ち上げや新規メンバーの参入によるユーザ登録、パスワードを数回間違えてアカウントをロックした方からのリセット依頼の対応、棚卸のためのユーザ一覧作成、どれも優先度が高くスポット対応しなければならない・・

こういった「随時対応の効率化」の悩みをもたれたことはないでしょうか。

突発事象であったり短納期の依頼であるなど、通常業務の手を止めて遂行しなければならない場面も多いと思います。

一方で管理者に近い権限を必要とするオペレーションのため、誰もが実施できる訳ではないといった事情も耳にします。

今回は

  • ユーザの主要関連オブジェクト

  • 新規ユーザ登録

  • パスワードリセット

  • ユーザ一覧取得

の方法をお届けします。

読み終えたあとワークフローを作成すれば、随時作業が自動化され本来業務に注力できるようになると思います。

ユーザの主要関連オブジェクト

ユーザ(User)オブジェクトを取り巻く、主要な関連オブジェクトを確認しておきましょう。

※本記事から読み始められた方で"オブジェクト"という単語を初めて目にした方は「Salesforce連携ソリューションを活用するための基礎知識1」を先にご覧ください。

Salesforce-Integration_vol9_image1

ロールとプロファイルは別オブジェクトとなっており、ユーザ登録に先だってIDを特定しておく必要があることがわかります。

新規ユーザ登録

レコードの関連を踏まえて、ユーザを登録するワークフロー作成します。

ワークフローの全体像は次の通りです。

Salesforce-Integration_vol9_image2

なお、プロファイルやロールは予めSalesforceに登録されている必要がありますので、ない場合はWeb画面から準備してください。

オブジェクトの関連に則したActivityの設定方法を中心にお届けしているため、Salesforceアプリケーションスコープの設定やエラー制御は含まれておりませんのでご了承ください。

個別にプロパティの設定内容を見てみます。

①プロファイル名からレコードのIDを特定します。
Salesforce-Integration_vol9_image3
①-1 SOQL詳細:

SELECT Id,Name FROM Profile WHERE Name = 'Force.com - Free User'

  • Id,プロファイル名(Name)をユーザ(User)オブジェクトから取得するSOQLです

  • レコードの絞込条件として、

    • 特定のプロファイル名であること

    をを指定しています。本例では「”Force.com - Free User”」を設定します。

  • SELECTの項目「Name」は後続で使用しませんが、デバッグ時に確認の補助となるため入れています

①-2 Salesforceステータスは必要に応じて設定します。

※本例では設定していますが、後続では使用しません。

①-3 SOQLの結果を格納するため変数を設定します。

  • 変数の型はDataTableです。

  • DataTable内の列はSELECTの項目名になるため、Id,Nameの2列になります。

②ロール名からレコードのIDを特定します。
Salesforce-Integration_vol9_image4
②-1 SOQL詳細:

SELECT Id,Name FROM UserRole WHERE Name = 'Marketing Team'

  • Id,ロール名(Name)をロール(UserRole)オブジェクトから取得するSOQLです

  • レコードの絞込条件として、

    • 特定のロール名であること

    を指定しています。本例では「”Marketing Team”」設定します。

  • SELECTの項目「Name」は後続で使用しませんが、デバッグ時に確認の補助となるため入れています

②-2 Salesforceステータスは必要に応じて設定します。

※本例では設定していますが、後続では使用しません。

②-3 SOQLの結果を格納するため変数を設定します。

  • 変数の型はDataTableです。

  • DataTable内の列はSELECTの項目名になるため、Id,Nameの2列になります。

③ユーザを登録します。
Salesforce-Integration_vol9_image5
Salesforce-Integration_vol9_image6

③-1 登録対象オブジェクト「Opportunity」を選択します。

③-2 登録対象の項目を選択する子ウインドウを開き、次の項目を選択します。

ロールID (UserRoleId), 言語 (LanguageLocaleKey), 名 (FirstName), 姓 (LastName), 通貨ISOコード (CurrencyIsoCode)

③-3 各項目に登録する値を設定します。

  • 名 (FirstName), 姓 (LastName), メール (Email), ニックネーム (CommunityNickname),別名 (Alias)は、任意の値でOKです。

  • ユーザ名 (Username)は、他社も含めた全Salesforceユーザで一意な値である必要があります。

  • 地域 (LocaleSidKey), 言語 (LanguageLocaleKey), タイムゾーン (TimeZoneSidKey), 通貨ISOコード (CurrencyIsoCode)は、被登録者の属性に合わせて設定します。日本であれば「ja_JP」「ja」「Asia/Tokyo」「JPY」で問題ありません。

  • メールの文字コード (EmailEncodingKey)は、会社のメールポリシーによりますので、IT管理者等に確認し設定ください。本例では「utf-8」を設定します。

  • プロファイルID (ProfileId)は、①で取得した「sfdcProfileList(0)("Id").ToString()」を設定します。

  • ロールID (UserRoleId)は、②で特定した「sfdcUserRoleList(0)("Id").ToString()」を設定します。

③-4 必要に応じてSalesforceステータスに変数を設定します。

※本例では設定していますが、後続では使用しません。

これで完成です。ワークフローを実行してみてください。ユーザが登録されていれば成功です。

パスワードリセット

ユーザのパスワードをリセットするワークフロー作成します。

ワークフローの全体像は次の通りです。

Salesforce-Integration_vol9_image7

なお、ユーザは予めSalesforceに登録されている必要がありますので、ない場合はWeb画面から準備してください。

個別にプロパティの設定内容を見てみます。

①ユーザ名からリセット対象ユーザレコードのIDを特定します。
Salesforce-Integration_vol9_image8
①-1 SOQL詳細:

SELECT Id,Name FROM User WHERE UserName = 'taro.sample@dummy.com'

  • Id,名前(Name)をユーザ(User)オブジェクトから取得するSOQLです

  • レコードの絞込条件として、

    • 特定のユーザ名であること

    を指定しています。本例では「”taro.sample@dummy.com”」を設定します。

  • SELECTの項目「Name」は後続で使用しませんが、デバッグ時に確認の補助となるため入れています

①-2 Salesforceステータスは必要に応じて設定します。

※本例では設定していますが、後続では使用しません。

①-3 SOQLの結果を格納するため変数を設定します。

  • 変数の型はDataTableです。

  • DataTable内の列はSELECTの項目名になるため、Id,Nameの2列になります。

②対象ユーザのパスワードをリセットします。
Salesforce-Integration_vol9_image9

②-1 オプショングループのプロパティは設定不要です。

②-2 固定値「DELETE」を選択します。

②-3 次の通り入力します。

"/services/data/v46.0/sobjects/User/" + sfdcUserList(0)("Id").ToString() + "/password"

  • 「sfdcUserList(0)("Id").ToString()」は①で取得した対象ユーザのレコードIDです。

②-4 固定値「JSON」を選択します。

②-5 必要に応じて設定します。

※本例では設定していますが、エラー処理などは割愛しているため、後続では使用しません。

これで完成です。ワークフローを実行してみてください。パスワードがリセットされていれば成功です。リセット時の動作として該当ユーザにメールが発信されるようSalesforceに設定されている場合は、着信したメールで確認できます。

ユーザ一覧取得

ユーザ一覧を取得するワークフロー作成します。

ワークフローの全体像は次の通りです。

Salesforce-Integration_vol9_image10

個別にプロパティの設定内容を見てみます。

①ユーザ一覧を取得します。
Salesforce-Integration_vol9_image11
①-1 SOQL詳細:

SELECT Id, Username, LastName, FirstName, EmployeeNumber, Email, Division, Department, Title, Country, IsActive, UserType, TimeZoneSidKey, LocaleSidKey, LanguageLocaleKey, CurrencyIsoCode, LastLoginDate, LastPasswordChangeDate, CreatedDate, LastModifiedDate FROM User

  • ユーザ(User)オブジェクトから取得するSOQLです。項目は「別表.SOQL項目詳細」参照。

  • 例では全量抽出しておりますが、有効ユーザに限定する場合は次のようにレコードの絞込条件を設定できます。

    WHERE IsActive = True

①-2 Salesforceステータスは必要に応じて設定します。

※本例では設定していますが、後続では使用しません。

①-3 SOQLの結果を格納するため変数を設定します。

  • 変数の型はDataTableです。

  • DataTable内の列はSELECTの項目名になるため、別表1の20列になります。

②ユーザ一覧をExcelに書き出します。
Salesforce-Integration_vol9_image12

②-1 Salesforceから取得したユーザ一覧を格納した変数を設定します。

  • 本例では①で取得した「sfdcUserList」を設定します。

※その他プロパティは図の通りとします。

これで完成です。ワークフローを実行してみてください。Excelにユーザ一覧が出力されていれば成功です。ちなみに、例を実行した際の出力結果(一部抜粋)は次の通りでした。

Salesforce-Integration_vol9_image13
まとめ

今回はユーザ(User)を操作するワークフローをお届しました。

皆様のワークフロー開発の一助になれば幸いです。

最後に今回の記事の中で取り上げた部品のリンク先などをお知らせします。

Activityの公開先 (UiPathマーケットプレイス):

https://marketplace.uipath.com/ja/listings/salesforce-activity-pack

Salesforce連携ソリューションご案内:

https://www.uipath.com/ja/solutions/technology/salesforce-automation

その他連携ソリューションご案内:

https://www.uipath.com/ja/solutions/application-cooperation-solutions

次回は「ファイルUploadと関連付け」をおこなうワークフローをお届けします。お楽しみに。

※SalesforceはSalesforce.com,Incの商標であり、許可のもとで使用しています。

 

また、UiPathでは、本記事で解説した内容に加えて、CRM/SFAの定着化のためのRPA活用について、実際の事例や、UiPathの連携ソリューションについてご紹介するeBookを無料で公開しています。eBookは下記よりダウンロードください。

Salesforce-Integration_vol22_image32

詳しくはこちら

Topics:

Salesforce
Avatar Placeholder Big
Hidetaka Obata

Senior Sales Engineer, UiPath

Get articles from automation experts in your inbox

Subscribe
Get articles from automation experts in your inbox

Sign up today and we'll email you the newest articles every week.

Thank you for subscribing!

Thank you for subscribing! Each week, we'll send the best automation blog posts straight to your inbox.