- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
LWCで動的フィルター付きレポートに遷移する方法
はじめに
SalesforceのLightning Web Component(LWC)では、NavigationMixin
を使用してユーザーを特定のレポートページへリダイレクトできます。
特に、動的なフィルター(Dynamic Filters) を設定して、ユーザーごとに異なるデータを表示させる方法は非常に便利です。
本記事では、LWCで動的フィルターを適用したレポートに遷移する方法を詳しく解説します。
ナビゲーションの基本構造
Salesforceでは、NavigationMixin.Navigate
を使用してレポートに遷移できます。
通常のレポート遷移コードは以下のようになります。
import { LightningElement } from 'lwc'; import { NavigationMixin } from 'lightning/navigation'; export default class RedirectToReport extends NavigationMixin(LightningElement) { handleNavigate() { this[NavigationMixin.Navigate]({ type: 'standard__recordPage', attributes: { recordId: 'a0GJ2000004NAlMMAW', // レポートのID objectApiName: 'Report', actionName: 'view' } }); } }
このコードを実行すると、指定した recordId
(レポートID)のレポートページへ遷移できます。
ただし、このままではフィルターの値を動的に変更できません。
動的フィルターを適用する
Salesforceでは、レポートのフィルターをURLパラメータ(state
)で渡すことが可能です。
フィルターの適用には fv0
、fv1
などのパラメータを使用します。
例えば、1つ目のフィルター(fv0
)に動的な値を設定するには、以下のように記述します。
import { LightningElement, track } from 'lwc'; import { NavigationMixin } from 'lightning/navigation'; export default class RedirectToReport extends NavigationMixin(LightningElement) { @track dynamicFilterValue = '2024-01-01'; // 動的なフィルター値 handleNavigate() { this[NavigationMixin.Navigate]({ type: 'standard__recordPage', attributes: { recordId: 'a0GJ2000004NAlMMAW', // レポートのID objectApiName: 'Report', actionName: 'view' }, state: { fv0: this.dynamicFilterValue // 1つ目のフィルターに適用 } }); } }
このコードでは、dynamicFilterValue
の値(例: 2024-01-01
)を fv0
に適用し、レポートを開く際にフィルター済みのデータのみを表示できます。
複数のフィルターを適用する
複数のフィルターを設定する場合、fv1
、fv2
などを追加していきます。
例:日付フィルター(fv0
)とステータスフィルター(fv1
)を適用
import { LightningElement, track } from 'lwc'; import { NavigationMixin } from 'lightning/navigation'; export default class RedirectToReport extends NavigationMixin(LightningElement) { @track dynamicFilterDate = '2024-01-01'; @track dynamicFilterStatus = 'Open'; handleNavigate() { this[NavigationMixin.Navigate]({ type: 'standard__recordPage', attributes: { recordId: 'a0GJ2000004NAlMMAW', objectApiName: 'Report', actionName: 'view' }, state: { fv0: this.dynamicFilterDate, // 1つ目のフィルター(例:日付) fv1: this.dynamicFilterStatus // 2つ目のフィルター(例:ステータス) } }); } }
このコードでは、fv0
に日付、fv1
にステータスを動的に設定し、レポートを開くと適用されるようになっています。
注意点
レポートIDは事前に取得する必要がある
recordId: 'a0GJ2000004NAlMMAW'
の部分は、Salesforce内の実際のレポートIDに置き換えてください。
フィルター項目の順番を確認する
fv0
はレポート内の最初のフィルター項目、fv1
は2番目のフィルター項目に対応します。- レポートのカスタムフィルター順序を変更した場合、適用フィルターの番号も変わるため注意してください。
URLパラメータの制限
NavigationMixin.Navigate
のstate
には、一部のSalesforceオブジェクトのみ使用可能です。- フィルター対象の項目が
fvX
に対応していない場合、正しく動作しないことがあります。
まとめ
NavigationMixin.Navigate
を使えば、LWCからレポートページに遷移できるstate
パラメータを活用すると、動的なフィルターを適用可能- 複数のフィルターを組み合わせることで、より柔軟なレポートナビゲーションが実現可能
この手法を活用すれば、ユーザーが適切な条件でレポートを開くことができ、操作性が向上します!
コメント
コメントを投稿