今回、リストビューから選択したレコードの帳票作成+商談更新をフローで一括実行する手順をご紹介します。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
左サイドバーの「リストビューボタンレイアウト」をクリックし、「▼」より「編集」をクリックします。
作成したボタンを「選択したボタン」へ移動し、「保存」ボタンをクリックします。
フローを実行
リストビューより、レコードを選択し、「帳票一括出力」ボタンをクリックします。
「次へ」ボタンをクリックします。
順次ファイルが出力されます。
「完了」ボタンをクリックで、リストビュー画面へ遷移します。