行動(Event)とToDo(Task)の操作
前回はメールを操作するワークフローについてご紹介しました。もし見逃したという方は「メール操作」も併せてご覧ください。
営業関連の予定はSalesforceカレンダー、その他社内の予定はグループウェアのスケジュールと、スケジュールを調整する際両方を見比べるのが大変なので、いつも両方に予定を登録している・・・
このように「予定の二重登録」に悩まれたことはないでしょうか。
社内のインフラが常に最適化されているとは限らないため、時として二重入力が必要になることがあります。
グループウェア操作の自動化と組み合わせると、スケジュール同期の手間がなくなると思います。
行動(Event)とToDo(Task)のオブジェクト構造
行動(Event)とToDo(Task)のオブジェクト構造を確認しておきましょう。
行動もToDoも所有者(OwnerId)でユーザ(User)と関連付けることで、誰の予定なのかを表しています。そのほか、「WhatId」でその予定がどの各種営業活動と関係するのか、「WhoId」で誰に関係するのかをオブジェクトとの関連で表しています。
WebUI上のカレンダーは、行動とToDoのビューとなっており、カレンダー上の予定は行動とToDoを取得することで充足します。
行動(Event)とToDo(Task)一覧の取得
行動(Event)とToDo(Task)の一覧を取得しExcelに出力するワークフローを作成します。
Excelイメージとワークフローの全体像は次の通りです。
なお、行動やToDoは予めSalesforceに登録されている必要がありますので、ない場合はWeb画面から準備してください。
Activityの設定方法を中心にお届けしているため、Salesforceアプリケーションスコープの設定やエラー制御は含まれておりません。また、Excelへの出力部分の実装は解説を割愛しておりますのでご了承ください。
個別にプロパティの設定内容を見てみます。
①行動の一覧を取得します。
-
SOQL詳細:
SELECT Id,Subject,Description,StartDateTime,Location,ActivityDateTime,IsAllDayEvent,ShowAs,WhatId,WhoId,OwnerId FROM Event WHERE Owner.Name = 'サンプル 従業員'
- Id,Subject(件名),Description(説明),StartDateTime(開始日時),EndDateTime(終了日時),Location(場所),IsAllDayEvent(終日の行動),ShowAs(予定の公開方法),What.Name(関連先名称),Who.Name(関連先担当者名),OwnerId(所有者)を行動(Event)オブジェクトから取得するSOQLです
- レコードの絞込条件として、
- 行動の所有者が特定のユーザであること
- Salesforceステータスは必要に応じて設定します。
※本例では設定していますが、後続では使用しません。 - SOQLの結果を格納するため変数を設定します。
- 変数の型はDataTableです。
- DataTable内の列はSELECTの項目名になるため、11列になります。
②ToDoの一覧を取得します。
-
SOQL詳細:
SELECT Id,Subject,Description,ActivityDate,Status,What.Name,Who.Name,OwnerId FROM Event WHERE Owner.Name = 'サンプル 従業員'
- Id, Subject(件名),Description(説明),ActivityDate(期日),Status(進捗状況),What.Name(関連先名称),Who.Name(関連先担当者名),OwnerId(所有者)をToDo(Task)オブジェクトから取得するSOQLです
- レコードの絞込条件として、
- ToDoの所有者が特定のユーザであること
- Salesforceステータスは必要に応じて設定します。
※本例では設定していますが、後続では使用しません。 - SOQLの結果を格納するため変数を設定します。
- 変数の型はDataTableです。
- DataTable内の列はSELECTの項目名になるため、8列になります。
これで完成です。ワークフローを実行してみてください。Excelに行動とToDoの一覧が出力されていれば成功です。
行動(Event)の登録
打合せ予定を登録するワークフロー作成します。
登録イメージとワークフローの全体感は次の通りです。
個別にプロパティの設定内容を見てみます。
①行動の所有者(誰の行動か)を特定します。
-
SOQL詳細:
SELECT Id,Name FROM User WHERE Name = 'サンプル 従業員'
- Id,Name(ユーザ氏名) をユーザ(User)オブジェクトから取得するSOQLです
- レコードの絞込条件として、
- 特定のユーザ氏名
- Salesforceステータスは必要に応じて設定します。
※本例では設定していますが、後続では使用しません。 - SOQLの結果を格納するため変数を設定します。
- 変数の型はDataTableです。
- DataTable内の列はSELECTの項目名になるため、Id,Nameの2列になります。
②打合せ先の取引先と取引先責任者を特定します。
-
SOQL詳細:
SELECT Id,Name,AccountId,Account.Name FROM Contact WHERE Name = 'サンプル 太郎' AND Account.Name = 'サンプル株式会社'
- Id,Name(取引先責任者名),AccountId(取引先ID), Account.Name(取引先名)を取引先責任者(Contact)オブジェクトから取得するSOQLです
- レコードの絞込条件として、
- 特定の取引先責任者名であること
- 特定の取引先名であること
- Salesforceステータスは必要に応じて設定します。
※本例では設定していますが、後続では使用しません。 - SOQLの結果を格納するため変数を設定します。
- 変数の型はDataTableです。
- DataTable内の列はSELECTの項目名になるため、Id,Name,AccountId,Account.Nameの4列になります。
③打ち合わせ予定を(行動を)登録します。
- 登録対象オブジェクト「Event」を選択します。
- 登録対象の項目を選択する子ウインドウを開き、次の項目を選択します。
Subject(件名),Description(説明),StartDateTime(開始日時),EndDateTime(終了日時),Location(場所),IsAllDayEvent(終日の行動),ShowAs(予定の公開方法),WhatId(関連先ID),WhoId(名前ID),OwnerId(所有者)
- 各項目に登録する値を設定します。
- Subject(件名),Description(説明),Location(場所)は任意の内容を設定します。
- StartDateTime(開始日時),EndDateTime(終了日時)は 「yyyy-MM-ddTHH:mm:ss+09:00」の形式で設定します。yyyy-MM-ddとHH:mm:ssの部分だけを差し替え、その他は固定値とします。本例では「2020-12-24T09:00:00+09:00」を設定します。
- IsAllDayEvent(終日の行動)は終日の予定か(true)否か(false)を設定します。本例では「false」を設定します。
- ShowAs(予定の公開方法)はカレンダーに表示したときの状態を設定します。本例では「Busy」(予定あり)を設定します。その他の値と意味は次の通りです。
Out of Office(外出中)/Free(空き時間)
※選択肢はカスタム可能なためご利用の環境に沿った値をご確認ください - WhatId(関連先ID)は各種営業活動と関連レコードのIDを設定します。本例では②で特定した取引先レコードのID「sfdcContactList(0)("AccountId").ToString()」を設定します
- WhoId(名前ID)は人物関連レコードのIDを設定します。本例では②で特定した取引先責任者レコードのID「sfdcContactList(0)("Id").ToString()」を設定します
- OwnerId(所有者)は誰の行動なのか設定します。本例では①で特定したユーザレコードのID「sfdcUserList(0)("Id").ToString()」を設定します
これで完成です。ワークフローを実行してみてください。取引先の行動欄に登録されていれば成功です。
ToDo(Task)の登録
商談のToDoタスクを登録するワークフロー作成します。
登録イメージとワークフローの全体感は次の通りです。
個別にプロパティの設定内容を見てみます。
①商談を特定します。
-
SOQL詳細:
SELECT Id,Name,AccountId,Account.Name FROM Opportunity WHERE Name = 'サンプル商談' AND Account.Name = 'サンプル株式会社'
- Id,Name(商談名),AccountId(取引先ID), Account.Name(取引先名)を商談(Opportunity)オブジェクトから取得するSOQLです
- レコードの絞込条件として、
- 特定の商談名であること
- 特定の取引先名であること
- Salesforceステータスは必要に応じて設定します。
※本例では設定していますが、後続では使用しません。 - SOQLの結果を格納するため変数を設定します。
- 変数の型はDataTableです。
- DataTable内の列はSELECTの項目名になるため、Id,Name,AccountId,Account.Nameの4列になります。
②商談にToDoを登録します。
- 登録対象オブジェクト「Task」を選択します。
- 登録対象の項目を選択する子ウインドウを開き、次の項目を選択します。
Subject(件名),Description(説明),ActivityDate(期日),Status(状況),WhatId(関連先ID),OwnerId(所有者ID)
- 各項目に登録する値を設定します。
- Subject(件名),Description(説明)は任意の内容を設定します。
- ActivityDate(期日)は「yyyy-MM-dd」の形式で設定します。本例では「2020-12-28」を設定します。
- Status(状況)は進捗状況を設定します。本例では「Not Started」(未開始)を設定します。その他の値と意味は次の通りです。
Completed/Deferred/In Progress/Waiting on someone else
※選択肢はTaskStatusオブジェクトにてカスタム可能ですので、ご利用の環境に沿った値をご確認ください - WhatId(関連先ID)は各種営業活動と関連レコードのIDを設定します。本例では②で特定した商談レコードのID「sfdcOpportunityList(0)("Id").ToString()」を設定します
- OwnerId(所有者)は誰のToDoなのか設定します。本例では①で特定したユーザレコードのID「sfdcUserList(0)("Id").ToString()」を設定します
これで完成です。ワークフローを実行してみてください。商談のToDo欄に登録されていれば成功です。
まとめ
今回は行動とToDoを操作するワークフローをお届しました。
皆様のワークフロー開発の一助になれば幸いです。
Activityの公開先 (UiPathマーケットプレイス):
Salesforce連携ソリューションご案内:
その他連携ソリューションご案内:
https://www.uipath.com/ja/solutions/application-cooperation-solutions
次回は「複合一括リクエスト」をおこなうワークフローをお届けします。お楽しみに。
