はじめに
Lightning Experienceでは、URLパラメータを用いたレポート絞り込みは以下の流れで設定します。(公式ヘルプ)
- レポートに対し、事前に絞り込み対象項目を設定する。
- URLパラメータ
fvX
(Xには数字が入る) を設定したURLを用いて、レポートにアクセスする。
しかし、Community Cloudのレポート画面にてURLパラメータ fvX
を設定しても、パラメータの内容は無視されます。
例
レポートで、商談のフェーズが"Closed Won"である商談を絞り込み表示する場合、URLパラメータ fvX
を使うと
https://apXX.lightning.force.com/lightning/r/Report/00Oxxxxxxxxxxxx/view?fv0=Closed%20Won
となります。
一方、Community Cloudでのレポート表示URL末尾に?fv0=Closed%20Won
を追加しても、「商談のフェーズが"Closed Won"」の絞り込み条件は追加されません。
Community Cloud でのレポート絞り込み
Community Cloud でURLパラメータを用いたレポート絞り込みをする場合は、reportFiltersパラメータを使用します。
reportFiltersは以下3項目で構成されています。
- column: 絞り込み項目名
- operator: 演算子
- value: 値
例えば、「フェーズが"Closed Won"と一致する商談」が条件の場合は以下のように指定します。
?reportFilters=[{"column":"STAGE_NAME","operator":"equals","value":"Closed Won"}]
また、「完了予定日が2020/8/1以降、かつ確度が50%未満の商談」が条件の場合は以下のように指定します。
?reportFilters=[{"column":"CLOSE_DATE","operator":"greaterOrEqual","value":"2020-08-01"},{"column":"PROBABILITY","operator":"lessThan","value":"10"}]
column の指定方法
先述した例の通り、columnで指定する項目名はAPI参照名とは微妙に異なっています。なので設定画面を見ても分かりません。
これを開発者コンソールで調べる方法は以下の通りです。
- まず、columnで指定したい項目をレポート検索条件、またはレポート表示項目に指定したレポートを作成して、保存します。その時、URLからレポートIDを取得します。
- レポート検索条件の値は何でもよいですが、後で確認しやすいよう、特定しやすい値にすることをお勧めします。
- 開発者コンソールを開き、Debug->Open Execute Anonymous Window (または Ctrl+Eキー) でApexコード実行画面を開きます。
- 以下Apexコードを入力し、[Execute]をクリックします。
String reportId = '<レポートID>'; Http http = new Http(); HttpRequest httpReq = new HttpRequest(); HttpResponse httpRes = new HttpResponse(); httpReq.setMethod('GET'); httpReq.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId()); httpReq.setEndpoint( URL.getSalesforceBaseUrl().toExternalForm()+ '/services/data/v47.0/analytics/reports/' + reportId + '?includeDetails=true' ); httpRes = http.send(httpReq); System.debug(httpRes.getBody());
- 画面下のLogsタブに実行ログが表示されるので、右クリックし[Open Raw Log]をクリックします。
- DEBUGログの中から「reportFilters(対象項目をレポート検索条件に指定した場合)」、または「detailColumns(対象項目をレポート表示項目に指定した場合)」を探し、対象項目のcolumn指定値を確認します。
- reportFiltersの場合は、先述の通り"value"に検索条件の値が記録されるため、この値で対象項目を含む条件を判別できます。
- detailColumnsの場合は、レポート項目表示順に項目が並びます。
operator の指定方法
レポートで使用可能な演算子と、reportFiltersで指定するoperatorの関係は以下表の通りです。
レポートの演算子 | 対応するoperator |
---|---|
次の文字列と一致する | equals |
次の文字列と一致しない | notEqual |
< | lessThan |
> | greaterThan |
<= | lessOrEqual |
>= | greaterOrEqual |
次の文字列を含む | contains |
次の文字列を含まない | notContain |
次の文字列で始まる | startsWith |
カスタムリンクを用いた Community Cloud でのレポート絞り込み
これまでは検索条件の値が固定の場合を考えてきましたが、実際はレコードの値に沿って検索条件を指定したい場合が多いと思います。
この場合はカスタムリンクを使って指定しますが、fvX
パラメータとは違い必要な書式に記号を含むため、事前に記号をURLエンコードする必要があります。
手順は以下のようになります。
- reportFiltersで指定する条件を書式に合わせて書き出します。この時、value部分は適当な文字列で埋めます。
- 「フェーズが表示している商談と一致する」が条件の場合は、
[{"column":"STAGE_NAME","operator":"equals","value":"AAAAAAA"}]
とします。
- 「フェーズが表示している商談と一致する」が条件の場合は、
- 書きだした文字列をURLエンコードします。方法は外部サイトを用いる、コマンドプロンプトでコマンド実行するなどありますが、必ずUTF-8形式でエンコードしてください。
- 先の例の場合は
%5B%7B%22column%22%3A%22STAGE_NAME%22%2C%22operator%22%3A%22equals%22%2C%22value%22%3A%22AAAAAAA%22%7D%5D
となります。
- 先の例の場合は
- value部分の文字列を消し、カスタムリンクの差し込み項目に差し替えます。
- 先の例の場合は「AAAAAAA」を「{!Opportunity.StageName}」に差し替え、
%5B%7B%22column%22%3A%22STAGE_NAME%22%2C%22operator%22%3A%22equals%22%2C%22value%22%3A%22{!Opportunity.StageName}%22%7D%5D
となります。 - URLエンコード後に差し込み項目に差し替える理由は、カスタムリンクURLの差し込み項目は「{!Opportunity.StageName}」の形を保つ必要があり、差し込み項目設定後にURLエンコードをしてしまうと項目値が差し込まれない(「{!Opportunity.StageName}」の文字列がそのまま検索条件として使用される)ためです。
- 先の例の場合は「AAAAAAA」を「{!Opportunity.StageName}」に差し替え、
- 対象コミュニティのURL、対象レポートID、先に作成した検索条件から、カスタムリンクURLを
/<コミュニティURL>/s/report/<レポートID>?reportFilters=<先に作成した検索条件>
のように指定します。- 対象コミュニティURLが
/sampleCommunity
の場合は/sampleCommunity/s/report/00Oxxxxxxxxxxxx/?reportFilters=%5B%7B%22column%22%3A%22STAGE_NAME%22%2C%22operator%22%3A%22equals%22%2C%22value%22%3A%22{!Opportunity.StageName}%22%7D%5D
のようになります。
- 対象コミュニティURLが
- 作成したカスタムリンクをページレイアウトに配置します。
追記
reportFiltersを用いた検索条件の指定は、Lightning Experience でも可能です。
Lightning Experience の場合、 カスタムリンクのURLに /lightning/r/Report/00Oxxxxxxxxxxxx/view?reportFilters=%5B%7B%22operator%22%3A%22equals%22%2C%22value%22%3A%22{!Opportunity.StageName}%22%2C%22column%22%3A%22STAGE_NAME%22%7D%5D
と指定すれば、事前にレポートへ検索項目を設定しなくても、好きな項目で検索条件を指定できます。
Appendix
Salesforce Report Parameters in a Community URL | Salesforce Chris