今回はVisualforceを使用してシンプルなレポートリンクを作成してみます。
検索条件の指定も可能なので動的レポートにはうってつけですね。

レポートリンクの作成
最もシンプルなVisualforceでのレポートリンクの作成方法はaタグの使用です。
以下のようにaタグ内にレポートのURLを指定し、リンクとして画面に表示します。
<apex:page >
<a style="color: #0176D3; font-size: 14px;" href="/lightning/r/Report/{!$Label.ReportId}/view">
取引先一覧
</a>
</apex:page>
ただし、Sandboxと本番環境ではレポートIdが異なることがあるのでカスタム表示ラベルにId格納して使用するようにします。
以下のようにレポートIdをカスタム表示ラベルに格納します。

Visualforceでのカスタム表示ラベルの値を取得するには、
{!$Label.カスタム表示ラベル名}
というように記述します。
作成したVisualforceを画面表示させればリンクの完成です。

条件の指定
レポートリンクで検索条件を指定する時は、以下のようにレポートのURL内で「fv」を使用します。
<apex:page >
<a style="color: #0176D3; font-size: 14px;" href="/lightning/r/Report/{!$Label.ReportId}/view?fv0={!$User.LastName} {!$User.FirstName}">
取引先一覧
</a>
</apex:page>
「fv0」は第1検索条件、「fv1」は第2検索条件を表しており、上記のコードでは第1検索条件にログインユーザの氏名を設定する処理になっています。
実際にレポートリンクを押下して表示したレポートの検索条件がこちら。

第1検索検索条件にレポートリンクを押下したユーザ(ログインユーザ)の氏名が設定されています。

もちろんApexコントローラで取得した値を検索条件に指定することもできます。
<apex:page controller="ReportLinkController" action="{!init}">
<a style="color: #0176D3; font-size: 14px;" href="/lightning/r/Report/{!$Label.ReportId}/view?fv0={!UserName}&fv1={!UserProfile1}, {!UserProfile2}">
取引先一覧
</a>
</apex:page>
public class ReportLinkController {
public String userName {get; set;}
public String UserProfile1 {get; set;}
public String UserProfile2 {get; set;}
public static void init(){
/*******
* 処理
*******/
}
}
上コードではコントローラから取得した値を第1検索条件と第2検索条件に指定しています。
さらに第2検索条件にはカンマ区切りで複数の値を条件に設定しており、より複雑な条件指定も可能です。
いろいろ試してやってみましょーう。
今回は以上です。
コメント