Salesforceのリストビューからフローで帳票作成+商談更新を一括実行する(OFC Ver.1用) – Office File Creator応用編 –

今回、リストビューから選択したレコードの帳票作成+商談更新をフローで一括実行する手順をご紹介します。Office File Creatorは、画面フローに組み込むことが可能です。

※本手順はOffice File Creator Ver.1用です。Ver.2をご利用の場合は、Salesforceのリストビューからフローで帳票作成+商談更新を一括実行する(OFC Ver.2用) – Office File Creator応用編 –を参照してください。

 

完成イメージ

完成イメージとして、リストビューよりレコードを選択後、「帳票一括作成」ボタンをクリックでフロー実行画面が表示され、フローを実行すると帳票作成と商談更新が一括で実行されます。

 

デモ

 

 

フロー作成のポイント

  • リストビューから選択したレコードIdをフローで受け取るパラメータは、「ids」です。フローでテキスト型の変数「ids」、コレクション変数をチェックオンで作成します。他の変数名はリストビューからレコードIdを受け取ることができません。
  • Office File Creatorでの帳票出力は、officeFileCreatorForFlowコンポーネントを画面フローに配置します。帳票作成結果(成功・失敗)を返し、失敗の場合はエラーメッセージを返却します。
  • 商談はループ内で更新せず、帳票作成が成功したレコードIdをコレクション変数に格納し、ループが終わったらまとめて更新します。

 

フロー処理概要

作成するフローの全体像です。

1. レコード選択有無判定

リストビューから選択されたレコードの有無を判定します。レコード有りの場合、2の処理へ進みます。無しの場合、1eの処理へ進みます。

1e. 終了画面

レコードが選択されていないメッセージを表示する終了画面を表示し、フローを終了します。

2. 合計件数セット
リストビューから選択されたレコード数の合計件数を変数にセットします。

3. トップ画面
実行確認メッセージを表示します。
4. idsループ処理
リストビューから選択されたレコードIdごとにループ処理を開始します。
5. 実行数追加
実行件数に1を追加します。
6. 帳票出力
officeFileCreatorForFlowコンポーネントを画面フローに配置し、帳票出力を実行します。
7. OFCエラー判定
帳票出力の成功・エラーを判定し、処理を分岐します。成功の場合、8の処理へ進みます。エラーの場合、7eの処理へ進みます。
7e. エラー内容追加
エラー件数に1を追加、エラーメッセージにofficeFileCreatorForFlowコンポーネントから返されるエラーメッセージを追加します。
8. 成功Id追加
成功Idに1を追加します。
9. 請求書出力日更新
商談の請求書出力日に今日の日付で更新します。成功の場合、10の処理へ進みます。エラーの場合、9eの処理へ進みます。
9e. 商談更新エラー画面
フローのエラーメッセージを表示します。帳票出力でエラーがあった場合、エラーメッセージも表示します。フローを終了します。
10. 完了画面
完了メッセージを表示します。帳票出力でエラーがあった場合、エラーメッセージも表示します。

 

フロー作成

それでは、フローを作成していきましょう。設定よりフローを開き、「新規フロー」ボタンをクリックします。

 

「画面フロー」を選択し、「作成」ボタンをクリックします。

 

 

変数作成

まず、フローで使用する変数を最初に作っておきます。作成する変数の一覧です。

変数名 説明
ids リストビューで選択されたレコードIdリスト
varSuccessIds 処理が成功したレコードIdリスト
varTotalIdsCount 合計レコード件数
varExecuteCount 処理件数
varErrorCount エラー件数
varErrorMessage エラーメッセージ

 

画面左上の「ツールボックスを切替」ボタンをクリックし、「新規リソース」ボタンをクリックします。

 

idsコレクション変数

リソース種別: 変数

API参照名: ids

説明: リストビューで選択されたレコードIdリスト

データ型: テキスト

複数の値を許可 (コレクション): チェックオン

入力で使用可能: チェックオン

※idsはリストビューからのレコードIdを受け取る変数です。″ids″(すべて小文字)で設定してください。他の変数名はリストビューからのレコードIdを受け取ることができません。

 

varSuccessIdsコレクション変数

リソース種別: 変数

API参照名: varSuccessIds

説明: 処理が成功したレコードIdリスト

データ型: テキスト

複数の値を許可 (コレクション): チェックオン

 

varTotalIdsCount変数

リソース種別: 変数

API参照名: varTotalIdsCount

説明: 合計レコード件数

データ型: 数値

小数点の位置: 0

 

varExecuteCount変数

リソース種別: 変数

API参照名: varExecuteCount

説明: 処理件数

データ型: 数値

小数点の位置: 0

 

varErrorCount変数

リソース種別: 変数

API参照名: varErrorCount

説明: エラー件数

データ型: 数値

小数点の位置: 0

デフォルト値: 0  ※デフォルト値に0をセットするのを忘れないようにしてください。

 

varErrorMessage変数

リソース種別: 変数

API参照名: varErrorMessage

説明: エラーメッセージ

データ型: テキスト

 

最初にフローを一度保存しておきます。「保存」ボタンをクリックします。

 

任意の名前で保存します。ここでは以下で保存しています。

フローの表示ラベル: 帳票一括出力画面フロー

フローのAPI参照名: MassOutputFileScreenFlow

説明: 商談のリストビューから帳票出力

 

警告が表示されたら、「×」で閉じます。

 

 

1. レコード選択有無判定

「画面フロー」の下の「+」マークをクリックし、「決定」を選択します。

 

プロパティを設定します。

表示ラベル: レコード選択有無判定

API参照名: DecSelectedRecordExists

[結果の詳細] セクション

表示ラベル: 無し

結果のAPI参照名: decSelectedRecordExists_No

結果を実行する条件の要件: すべての条件に一致 (AND)

リソース: {!ids}

演算子: null

値: {!$GlobalConstant.True}

 

左サイドバーの「デフォルトの結果」をクリックします。

 

プロパティを設定します。

[結果の詳細] セクション

表示ラベル: 有り

 

1e. 終了画面

「無し」の下の「+」マークをクリックし、「画面」を選択します。

 

プロパティを設定します。

表示ラベル: 終了画面

API参照名: EndScreen

 

コンポーネントより、表示テキストをドラッグ&ドロップし、プロパティを設定します。

API参照名: dispNoRecordMsg

テキスト:

レコードが選択されていません。

1件以上のレコードを選択後、実行してください。

 

2. 合計件数セット

「有り」の下の「+」 マークをクリックし、「割り当て」を選択します。

 

プロパティを設定します。

表示ラベル: 合計件数セット

API参照名: SetTotalIdsCount

変数: {!varTotalIdsCount}

演算子: 次の数と一致する

値: {!ids}

 

3. トップ画面

「合計件数セット」の下の「+」マークをクリックし、「画面」を選択します。

 

プロパティを設定します。

表示ラベル: トップ画面

API参照名: TopScreen

 

コンポーネントより、表示テキストをドラッグ&ドロップし、プロパティを設定します。

API参照名: dispConfirmMsg

テキスト:

{!varTotalIdsCount} 件の帳票を作成します。

よろしいですか?

 

 

4. idsループ処理

「トップ画面」の下の「+」マークをクリックし、「ループ」を選択します。

 

プロパティを設定します。

表示ラベル: idsループ処理

API参照名: LoopIds

コレクション変数: {!ids}

方向: 最初の項目から最後の項目へ

 

5. 実行数追加

「項目ごと」の下の「+」マークをクリックし、「割り当て」を選択します。

 

プロパティを設定します。

表示ラベル: 実行数追加

API参照名: AddExecuteCount

変数: {!varExecuteCount}

演算子: 追加

値: 1

 

6. 帳票出力

「実行数追加」の下の「+」マークをクリックし、「画面」を選択します。

 

プロパティを設定します。

表示ラベル: 帳票出力

API参照名: OutputFile

フッターを表示: チェックオフ

※ユーザがofficeFileCreatorForFlowの実行中に「次へ」や「前へ」のボタンをクリックしないようにフッターを非表示にします。

 

コンポーネントより、表示テキストをドラッグ&ドロップし、プロパティを設定します。

API参照名: dispExecuteCount

テキスト: {!varExecuteCount} / {!varTotalIdsCount}

 

コンポーネントより、「officeFileCreatorForFlow」を表示テキスト「dispExecuteCount」の下にドラッグ&ドロップし、プロパティを設定します。

API参照名: OFCCmp

recordId: {!LoopIds}

save: 空欄  ※ファイルに保存する場合は、fileまたはattを入力します。

template: OpportunityExcelBill  ※OFC_TemplateレコードのテンプレートApi名を入力します。

 

7. OFCエラー判定

「帳票出力」の下の「+」マークをクリックし、「決定」を選択します。

 

プロパティを設定します。

表示ラベル: OFCエラー判定

API参照名: DecOFCError

[結果の詳細] セクション

表示ラベル: エラー

結果のAPI参照名: decOFCError_Yes

結果を実行する条件の要件: すべての条件に一致 (AND)

リソース: {!OFCCmp.isSuccess}

演算子: 次の文字列と一致する

値: {!$GlobalConstant.False}

 

左サイドバーの「デフォルトの結果」をクリックします。

 

プロパティを設定します。

[結果の詳細] セクション

表示ラベル: 成功

 

7e. エラー内容追加

「エラー」の下の「+」マークをクリックし、「割り当て」を選択します。

 

プロパティを設定します。

表示ラベル: エラー内容追加

API参照名: AddErrorContents

[変数1つ目]

変数: {!varErrorCount}

演算子: 追加

値: 1

[変数2つ目]

変数: {!varErrorMessage}

演算子: 追加

値: {!OFCCmp.errorMessage}

※OFCのエラーメッセージは、1件ごとに改行が含まれるため、複数のエラーが存在する場合、改行されて表示されます。

 

8. 成功Id追加

「成功」の下の「+」マークをクリックし、「割り当て」を選択します。

 

プロパティを設定します。

表示ラベル: 成功Id追加

API参照名: AddSuccessIds

変数: {!varSuccessIds}

演算子: 追加

値: {!LoopIds}

 

9. 請求書出力日更新

「最後の項目の後」の下の「+」マークをクリックします。

 

「レコードを更新」を選択します。

 

プロパティを設定します。

表示ラベル: 請求書出力日更新

API参照名: UpdateBillOutputDate

更新するレコードを検索してその値を設定する方法: 「レコードを識別する条件を指定し、項目を個別に設定」にチェックオン

[このオブジェクト種別のレコードを更新] セクション

オブジェクト: 商談

[商談レコードを絞り込み] セクション

レコードを更新する条件の要件: すべての条件に一致 (AND)

項目: Id

演算子: 次に含まれる

値: {!varSuccessIds}

[商談の項目値をレコードに設定] セクション

項目: BillOutputDate__c

値: {!$Flow.CurrentDate}

※商談に請求書出力日(API名:BillOutputDate__c)のカスタム項目(日付型)を作成しています。

 

9e. 商談更新エラー画面

「請求書出力日更新」をクリックします。

 

「障害パスを追加」をクリックします。

 

「障害」の下の「+」マークをクリックし、「画面」を選択します。

 

プロパティを設定します。

表示ラベル: 商談更新エラー画面

API参照名: UpdateOpportunityErrorScreen

フッターを設定より、[前へ]ボタン内の「[前へ]を非表示」をチェックオンにします。

 

コンポーネントより、表示テキストをドラッグ&ドロップし、プロパティを設定します。

API参照名: dispUpdateOpportunityErrorMsg

テキスト:

商談更新エラー

{!$Flow.FaultMessage}

文字色は、カラーパレットより赤に設定します。

 

コンポーネントより、表示テキストを表示テキスト「dispFlowErrorMsg」の下にドラッグ&ドロップし、プロパティを設定します。

API参照名: dispOfcErrorMsg

テキスト:

帳票出力エラー

{!varErrorMessage}

文字色は、カラーパレットより赤に設定します。

 

「コンポーネントの表示を設定」をクリックし、条件を設定します。

コンポーネントを表示するタイミング: すべての条件に一致 (AND)

リソース: {!varErrorCount}

演算子: より大きい

値: 0

 

10. 完了画面

「請求書出力日更新」の下の「+」マークをクリックし、「画面」を選択します。

プロパティを設定します。

表示ラベル: 完了画面

API参照名: CompletedScreen

フッターを設定より、[前へ]ボタン内の「[前へ]を非表示」をチェックオンにします。

コンポーネントより、表示テキストをドラッグ&ドロップし、プロパティを設定します。

API参照名: dispCompletedMsg

テキスト:

完了しました。

実行数: {!varExecuteCount} 件

エラー数: {!varErrorCount} 件

コンポーネントより、表示テキストを表示テキスト「dispCompletedMsg」の下にドラッグ&ドロップし、プロパティを設定します。

API参照名: dispErrorMessage

テキスト:

エラー一覧

{!varErrorMessage}

文字色は、カラーパレットより赤に設定します。

「コンポーネントの表示を設定」をクリックし、条件を設定します。

コンポーネントを表示するタイミング: すべての条件に一致 (AND)

リソース: {!varErrorCount}

演算子: より大きい

値: 0

 

これでフローは完成です。

 

「保存」ボタンをクリックし、保存します。

 

 

フローをデバッグ

「デバッグ」ボタンをクリックします。

 

以下のように表示され、デバッグ時にレコードIdの入力欄がありません。レコードが選択されていない状態でのテストとのみとなります。

まずは、レコードが選択されていない状態をテストします。実行ボタンをクリックします。

 

終了画面が表示されます。

 

次に、デバッグ時のみ、デバッグ用のレコードIdをids変数に割り当てます。「開始フロー」の下の「+」マークをクリックし、「割り当て」を選択します。

※この割り当ては、デバッグ完了後に削除します。

 

プロパティを設定します。

表示ラベル: デバッグ用Idセット

API参照名: SetIdsForDebug

変数: {!ids}

演算子: 追加

値: ※テスト用の商談レコードIdをセットします。

例では、商談レコードIdを2件追加します。

 

「開始フロー」の下に「デバッグ用Idセット」が追加されていることを確認します。

 

「保存」ボタンをクリック後、「デバッグ」ボタンをクリックします。

 

「実行」ボタンをクリックします。

 

「次へ」ボタンをクリックします。

 

ファイルが出力されることを確認します。また、レコード詳細画面より、請求書出力日が更新されていることを確認します。

 

次に、エラー有りの場合をテストします。フロー編集画面に戻り、「デバッグ用Idセット」をクリックし、存在しないレコードIdを追加します。

演算子: 追加

値: ※存在しない商談IdのレコードIdをセットします。

例では、存在しない商談レコードIdを3件追加します。

 

「保存」ボタンをクリック後、「デバッグ」ボタンをクリックします。

 

「実行」ボタンをクリックします。

 

「次へ」ボタンをクリックします。

 

エラーメッセージが3件表示されることを確認します。

 

デバッグ完了後、「デバッグ用Idセット」をクリックします。

 

「要素を削除」をクリックします。

 

削除されたことを確認します。

 

「保存」ボタンをクリック後、「有効化」ボタンをクリックします。フロー画面を閉じます。

 

カスタムボタン作成

リストビューに配置する帳票出力用のカスタムボタンを作成します。

設定のオブジェクトマネージャより、対象のオブジェクトを開きます。左サイドバーの「ボタン、リンク、およびアクション」をクリックし、「新規ボタンまたはリンク」ボタンをクリックします。

 

各種設定を入力します。

表示ラベル: 帳票一括出力

名前: MassOutputFile

表示の種類: リストボタン

チェックボックスの表示(複数レコード選択用): チェックオン

動作: 現在のウィンドウにサイドバー付きで表示

コンテンツソース: URL

URL: /flow/フローAPI名?retUrl=/lightning/o/オブジェクトAPI名/list?filterName=リストビューId

*「retUrl」は、フロー完了後、フロー画面からリストビューへ遷移するURLです。

*リストビューIdは、リストビュー画面のURLの「filterName=」の後ろのIdです。

例では、以下をセットしています。

/flow/MassOutputFileScreenFlow?retUrl=/lightning/o/Opportunity/list?filterName=00B9D000003QS4XUAW

 

左サイドバーの「リストビューボタンレイアウト」をクリックし、「▼」より「編集」をクリックします。

 

作成したボタンを「選択したボタン」へ移動し、「保存」ボタンをクリックします。

 

フローを実行

リストビューより、レコードを選択し、「帳票一括出力」ボタンをクリックします。

 

「次へ」ボタンをクリックします。

 

順次ファイルが出力されます。

 

「完了」ボタンをクリックで、リストビュー画面へ遷移します。

 

請求書出力日が更新されています。

 

 

タイトルとURLをコピーしました