blog
ブログ
2016.10.18
Salesforce技術ブログ(開発者コンソールの匿名実行Apexツールでレポートの情報を取得してみる)
はじめに
クライマックスシリーズ面白かったですね!
日本シリーズ&ドラフトが楽しみなドライ市来です。
さて、みなさんは作成したレポートをどのように管理してますか?
また、レポートで使用されている項目をどのように確認していますか?
私はEclipseでメタデータを取得し、管理や確認してますが、
どうにか効率化できないかApex開発者ガイドを漁っていたら、
なんかできそうな感じのクラス「ReportManager クラス」を発見!!
https://developer.salesforce.com/docs/atlas.ja-jp.202.0.apexcode.meta/apexcode/apex_class_reports_reportmanager.htm
ということで、開発者コンソールからゴニョゴニョ第2弾として、
開発者コンソールからレポート情報を取得してみようと思います。
書いてみた
下記コードを開発者コンソールで実行すると指定したレポートの情報が取得できます。
Map<String, String> REPORT_FORMAT_MAP = new Map<String, String>{
'Tabular' => '表形式',
'Matrix' => 'マトリックス形式',
'Summary' => 'サマリー形式'
};
// レポートのID
Id repoId = '00Oxxxxxxxxxxxx';
List<Report> repoList = [SELECT Id, Name, format, DeveloperName, FolderName FROM Report WHERE Id = :repoId];
if(repoList.size() > 0){
Report repo = repoList.get(0);
// 変数初期化
Boolean isError = false;
Reports.ReportDescribeResult results = null;
String repoDispType = '';
String repoType = '';
String biko = '';
System.debug('==================================================');
try{
// レポートの情報を取得
results = Reports.ReportManager.describeReport(repo.Id);
// レポートの表示形式を取得
repoDispType = REPORT_FORMAT_MAP.get(repo.format);
// レポートタイプを取得
Reports.ReportType rt = results.getReportMetadata().getReportType();
repoType = rt.getLabel() + '(' + rt.getType() + ')';
}
catch(Exception e){
biko = e.getMessage();
isError = true;
}
System.debug('レポート名:' + repo.Name);
System.debug('API参照名:' + repo.DeveloperName);
System.debug('レポートタイプ:' + repoType);
System.debug('表示形式:' + repoDispType);
System.debug('フォルダ:' + repo.FolderName);
System.debug('備考:' + biko);
System.debug('レポートID:' + repo.Id);
if(!isError){
// レポートの詳細情報を取得
Reports.ReportExtendedMetadata rem = results.getReportExtendedMetadata();
System.debug('-----表示項目-----');
Integer colCnt = 1;
System.debug('No|表示ラベル|API参照名');
// 表示項目の取得
for(Reports.DetailColumn dc : rem.getDetailColumnInfo().values()){
System.debug(String.valueOf(colCnt) + '|' + dc.getLabel() + '|' + dc.getName());
colCnt++;
}
System.debug('------------------');
}
System.debug('==================================================');
}
さいごに
もう少し掘り下げれば便利なツールができそうですが、今回はここまでにしておきます…
みなさんは、「ReportManager クラス」をご存知でしたか?
ほかにも便利そうなApexクラスまだまだありそうなので、
ちょっと暇だなぁと思ったときはApexコード開発者リファレンスを読み込んでみるものアリですよ!
★開発する必要なく検索画面を作れる、検索クリエイターPRO 今なら30日無料トライアル受付中!★