UiPath Blog
前回はレポートを取得するワークフローについてご紹介しました。もし見逃したという方は「レポートの実行と結果の取得」も併せてご覧ください。
見積書作成などSalesforceの情報を基にした事務では、定型の依頼書が添付されていなかったり内容に不備がみつかることがあるため、予めチェックし不備が見つかるとChatterで担当者に通知をしている。こうしたチェックや連絡は、事務の効率を下げ時間のロスにつながっている・・・。
こういった「定型的な不備チェックと担当者へのChatter通知」に悩まれたことはないでしょうか。
開発コストとの兼ね合いでSalesforceにチェック機能を実装せず、手作業で補うケースもよく耳にします。
不備チェックについてはUiPathの基本機能を活用し対象ごとにご対応いただくこととし、ここでは担当者へのChatter通知部分について、次の内容でお届けします。
Chatterのオブジェクト構造
メッセージの投稿
メンションの入れ方
ファイルの関連付け
基本機能による不備チェックと組合せれば、前捌き作業から解放されると思います。
Chatter(FeedItem) のオブジェクト構造を確認しておきましょう。
Chatterは様々な場面で「コミュニケーション手段」「履歴の記録手段」として利用できるよう提供されており、様々なオブジェクトと関連づけられるようになっています。 図の「関連先オブジェクト」や添付ファイルなどがその例です。
オブジェクトの世界ではChatterは「フィード(FeedItem)」と呼ばれます。
オブジェクトの構造からフィードを投稿するには、"関連オブジェクト"のIDを先に特定する必要があることがわかります。またファイルを添付するには、先にフィードを投稿しておく必要があることもわかります。
以降でお届けするChatterの操作方法は、これまでお届けしてきたオブジェクトへの直接操作方法(登録、更新など)とは、一部異なる部分がありますので、合わせてご紹介します。
商談に関連付けてChatterを投稿するワークフロー作成します。
投稿するメッセージとワークフローの全体像は次の通りです。
なお、商談は予めSalesforceに登録されている必要がありますので、ない場合はWeb画面から準備してください。
Activityの設定方法を中心にお届けしているため、Salesforceアプリケーションスコープの設定やエラー制御は含まれておりませんのでご了承ください。
個別にプロパティの設定内容を見てみます。
SELECT Id,Name FROM Opportunity WHERE Name = 'サンプル商談' AND Account.Name = 'サンプル株式会社'
Id,Name(商談名)を商談(Opportunity)オブジェクトから取得するSOQLです
レコードの絞込条件として、
特定の商談名であること
特定の取引先名であること
を指定しています。本例では「'サンプル商談'」「'サンプル株式会社'」を設定します。
①-2 Salesforceステータスは必要に応じて設定します。
※本例では設定していますが、後続では使用しません。
①-3 SOQLの結果を格納するため変数を設定します。
変数の型はDataTableです。
DataTable内の列はSELECTの項目名になるため、Id,Nameの2列になります。
②メッセージ雛型を変数にセットします。
左辺:
sfdcChatterBody
右辺:
JObject.Parse("{ body : { messageSegments : [ { type : 'Text', text : '' } ] }, feedElementType : 'FeedItem', subjectId : '' }")
左辺の変数名は任意のものでOKです
右辺はメッセージ内容によらず共通ですので、コピーしてご利用ください
②-2 関連付ける商談レコードのIDをメッセージ雛型に差し込みます。
左辺:
sfdcChatterBody("subjectId")
右辺:
sfdcOpportunityList(0)("Id").ToString()
②-1メッセージ雛型にある「subjectId : '' 」の''内に、商談レコードのIDを差し込んでいます
左辺の「("subjectId")」は常に固定です
右辺は商談レコードのIDを指定しています
②-3 メッセージ本文を雛型に差し込みます。
左辺:
sfdcChatterBody("body")("messageSegments")(0)("text")
右辺:
" こんにちは。¥nテストです。"
②-1メッセージ雛型にある「text : ''」の''内に、メッセージ本文を差し込んでいます。
左辺の「("body")("messageSegments")(0)("text")」は固定です
右辺は投稿したい任意のメッセージです。メッセージ本文に改行を含める場合は改行の位置に「¥n」を入れる必要があります
③-1 ②で編集したメッセージを設定します。 sfdcChatterBody.ToString()
メッセージを格納した変数名に「.ToString()」を付けます
③-2 固定値「"application/json"」を設定します。
③-3 固定値「Post」を選択します。
③-4 固定値「"/services/data/v46.0/chatter/feed-elements"」を設定します。
③-5 固定値「JSON」を選択します。
③-6 必要に応じて設定します。
※本例では設定していますが、後続では使用しません。
これで完成です。ワークフローを実行してみてください。商談のChatterにメッセージが登録されていれば成功です。
メンションつきのメッセージをChatterに投稿するワークフロー作成します。 投稿するメッセージとワークフローの全体像は次の通りです。
なお、本節は前節の続きとなっておりますので、以降で説明していない部分は前節をご参照ください。
個別にプロパティの設定内容を見てみます。
SELECT Id,UserName FROM User WHERE Name = 'テスト 一郎'
Id,ユーザ名(UserName)をユーザ(User)オブジェクトから取得するSOQLです
レコードの絞込条件として、 氏名を指定しています。他の条件でもOKです。
WHERE EmployeeNumber = '123456'
WHERE UserName = 'sample@example.com'
SELECTの項目「UserName」は後続で使用しませんが、デバッグ時に確認の補助となるため入れています
①-2 Salesforceステータスは必要に応じて設定します。
※本例では設定していますが、後続では使用しません。
①-3 SOQLの結果を格納するため変数を設定します。
変数の型はDataTableです。
DataTable内の列はSELECTの項目名になるため、Id,UserNameの2列になります。
②-1 メッセージ雛型を変数にセットします。
左辺:
sfdcChatterBody
右辺:
JObject.Parse("{ body : { messageSegments : [ { type: 'Mention', id: '' }, { type : 'Text', text : '' } ] }, feedElementType : 'FeedItem', subjectId : '' }")
左辺の変数名は任意のものでOKです
右辺は前節の共通設定内容に「{ type: 'Mention', id: '' },」が加わります
②-2 関連付ける商談レコードのIDをメッセージ雛型に差し込みます。詳細は前節ご参照ください。
②-3 メンションするユーザのIDを差し込みます。
左辺:
sfdcChatterBody("body")("messageSegments")(0)("id")
右辺:
sfdcMentionUserList(0)("Id").ToString()
②-1メッセージ雛型にある「id: ''」の''内に、ユーザのIDを差し込んでいます。
左辺の「("body")("messageSegments")(0)("id")」は固定です
右辺はユーザレコードのIDを指定しています
②-4 メッセージ本文を雛型に差し込みます。
左辺:
sfdcChatterBody("body")("messageSegments")(1)("text")
右辺:
" こんにちは。¥nテストです。"
②-1メッセージ雛型にある「text : ''」の''内に、メッセージ本文を差し込んでいます。
左辺の「("body")("messageSegments")(1)("text")」は固定です。前節と「(1)」が異なります。
右辺は前節と同じです。
これで完成です。ワークフローを実行してみてください。メンション付きメッセージがChatterに投稿されていれば成功です。
ファイルを添付したメッセージをChatterに投稿するワークフロー作成します。 ワークフローの全体像は次の通りです。
なお、本節は前節の続きとなっておりますので、以降で説明していない部分は前節をご参照ください。
個別にプロパティの設定内容を見てみます。
①-1 Salesforce上でのフィアルのタイトルを設定します。
タイトルは任意でOKです。本例では"サンプルファイル20201221-100500"といった名称になるよう「String.Format("サンプルファイル{0:yyyyMMdd-hhmmss}", DateTime.Now)」を設定しています
①-2 アップロードするファイルのパスを設定します。
パスは任意でOKです。
①-3 必要に応じて変数を設定します。
※本例では設定していますが、後続では使用しません。
①-4 アップロードしたファイルバージョンのIDを格納する変数を設定します。
①-5 アップロードしたファイルのIDを格納する変数を設定します。
②-1 アップロードしたファイルのIDが納された変数を設定します。
②-2 関連付ける商談レコードのIDを設定します。
sfdcOpportunityList(0)("Id").ToString()
②-3 公開範囲を設定します。
例は「AllUsers」を設定しています。選択肢は次の通りです。
AllUsers: ファイル参照権限を持つ全ユーザ
InternalUsers:ファイル参照権限を持つ内部ユーザ
SharedUsers:フィードを表示できる全ユーザ
②-4 公開ユーザの編集権限を設定します。
例は「V」を設定しています。選択肢は次の通りです。
V: 閲覧者権限
C: 共同作業
I: 関連レコードに対するユーザの許可から推測
②-5 必要に応じて変数を設定します。
※本例では設定していますが、後続では使用しません。
③-1 登録対象のオブジェクト「FeedAttachment」を選択します。
③-2 登録対象の項目を選択する子ウインドウを開き、次の項目を選択します。 RecordId(添付レコードID)、Type(フィード添付種別)、FeedEntityId(フィードエンティティID)
③-3 各項目に登録する値を設定します。
RecordId(添付レコードID)は、アップロードしたファイルバージョンのIDを設定します
Type(フィード添付種別)は、固定値「"Content"」を設定します
FeedEntityId(フィードエンティティID)は、Chatterに投稿したメッセージのIDで「Ctype(JObject.Parse(sfdcResponse)("id"), String)」を設定します
これで完成です。ワークフローを実行してみてください。添付ファイル付きメッセージがChatterに投稿されていれば成功です。
今回はChatterにメッセージを投稿するワークフローをお届しました。
皆様のワークフロー開発の一助になれば幸いです。
最後に今回の記事の中で取り上げた部品のリンク先などをお知らせします。
Activityの公開先 (UiPatマーケットプレイス):
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
次回は「メール操作」をおこなうワークフローをお届けします。お楽しみに。
※SalesforceはSalesforce.com,Incの商標であり、許可のもとで使用しています。
また、UiPathでは、本記事で解説した内容に加えて、CRM/SFAの定着化のためのRPA活用について、実際の事例や、UiPathの連携ソリューションについてご紹介するeBookを無料で公開しています。eBookは下記よりダウンロードください。
詳しくはこちら
Topics:
SalesforceSenior Sales Engineer, UiPath