こんにちは、アンダーソンです。
今回は、前回のMetadataを使ってリストビューを取得変更のレポート版になります。
レポートはPackage.xmlでアスタリスクをサポートしていなく、
どのように取得すればいいんだ?ってなったので備忘録として残して
おこうと思います。
Contents
事前準備
まずはレポートを取得する場合はレポート名を指定する必要があります。
これは普通にデータローダとかからでも取れるので、下記のようにSOQLを発行して取得しましょう。
SELECT Id, FolderName, DeveloperName FROM Report
ここでポイントなのがFolderNameも取得しておくことです。
レポート名はDeveloperNameからAPI名を取得して指定するのと、
FolderNameでフォルダ名も指定する必要があります。
指定の仕方としては
FolderName/DeveloperName
という形式になります。
なので取得したファイルから文字列結合して下記のようにした上でPackage.xmlにはっつけました。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>非公開レポート/Report1</members>
<members>非公開レポート/new_report</members>
<members>非公開レポート/Report</members>
<members>非公開レポート/X9_7_15</members>
<members>非公開レポート/Business_talks</members>
<members>非公開レポート/Progress_of_business_talks_by_custom_suppliers</members>
<members>非公開レポート/Listing_cost_by_publishing_company</members>
<members>公開レポート/LastMonth_WorkDetail</members>
<members>公開レポート/ThisMonthWorkDetails</members>
<members>公開レポート/ProgressOpp</members>
<members>公開レポート/flow_screen_prebuilt_report</members>
<members>Data Quality Reports/AccountDataQualityDescriptions</members>
<members>Data Quality Reports/AccountDataQualityScore</members>
<members>Data Quality Reports/AccountOwnerDataQuality</members>
<members>Data Quality Reports/ActivityAssignedOwnerDataQuality</members>
<members>Data Quality Reports/ActivityDataQualityDescription</members>
<members>Data Quality Reports/ActivityDataQualityScore</members>
<members>Data Quality Reports/CampaignDataQualityDescription</members>
<members>Data Quality Reports/CampaignDataQualityScore</members>
<members>Data Quality Reports/CampaignOwnerDataQuality</members>
<members>Data Quality Reports/CaseDataQualityDescription</members>
<members>Data Quality Reports/CaseDataQualityScore</members>
<members>Data Quality Reports/CaseOwnerDataQuality</members>
<members>Data Quality Reports/ContactDataQualityDescriptions</members>
<members>Data Quality Reports/ContactDataQualityScore</members>
<members>Data Quality Reports/ContactOwnerDataQuality</members>
<members>Data Quality Reports/ContractDataQualityDescription</members>
<members>Data Quality Reports/ContractDataQualityScore</members>
<members>Data Quality Reports/ContractOwnerDataQuality</members>
<members>Data Quality Reports/LeadDataQualityDescription</members>
<members>Data Quality Reports/LeadDataQualityScore</members>
<members>Data Quality Reports/LeadOwnerDataQuality</members>
<members>Data Quality Reports/OpportunityDataQualityDescription</members>
<members>Data Quality Reports/OpportunityDataQualityScore</members>
<members>Data Quality Reports/OpportunityOwnerDataQuality</members>
<name>Report</name>
</types>
<version>50.0</version>
</Package>
でできたのがこんな感じ。
で、これを取得してみました。

当然のことかもなんですが、非公開レポートは取得できないです。
公開グループはunfiled$publicという名前になります。
FolderNameは日本語でもいけるという不思議。
なぜなんでしょうか。。
取得データは結構ややこしい
レポートの場合、リストビューとは違い簡単なカラムだけではなく
サマリやマトリックスなどあるのでファイル形式は結構複雑になります。

見た目はこんなレポートでも紐解くとこんな感じになります。
<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://soap.sforce.com/2006/04/metadata">
<chart>
<backgroundColor1>#FFFFFF</backgroundColor1>
<backgroundColor2>#FFFFFF</backgroundColor2>
<backgroundFadeDir>Diagonal</backgroundFadeDir>
<chartSummaries>
<axisBinding>y</axisBinding>
<column>RowCount</column>
</chartSummaries>
<chartType>VerticalColumn</chartType>
<enableHoverLabels>false</enableHoverLabels>
<expandOthers>true</expandOthers>
<groupingColumn>FULL_NAME</groupingColumn>
<location>CHART_BOTTOM</location>
<showAxisLabels>true</showAxisLabels>
<showPercentage>false</showPercentage>
<showTotal>false</showTotal>
<showValues>false</showValues>
<size>Medium</size>
<summaryAxisRange>Auto</summaryAxisRange>
<textColor>#000000</textColor>
<textSize>12</textSize>
<titleColor>#000000</titleColor>
<titleSize>18</titleSize>
</chart>
<columns>
<field>OPPORTUNITY_NAME</field>
</columns>
<columns>
<field>CLOSE_DATE</field>
</columns>
<columns>
<field>STAGE_NAME</field>
</columns>
<description>Identifies quality of data by Record Owner</description>
<format>Summary</format>
<groupingsDown>
<dateGranularity>Day</dateGranularity>
<field>FULL_NAME</field>
<sortOrder>Asc</sortOrder>
</groupingsDown>
<name>Opportunity Owner Data Quality</name>
<params>
<name>terr</name>
<value>all</value>
</params>
<params>
<name>open</name>
<value>all</value>
</params>
<params>
<name>probability</name>
<value>>0</value>
</params>
<params>
<name>co</name>
<value>1</value>
</params>
<reportType>Opportunity</reportType>
<scope>organization</scope>
<showDetails>false</showDetails>
<showGrandTotal>true</showGrandTotal>
<showSubTotals>true</showSubTotals>
<timeFrameFilter>
<dateColumn>CLOSE_DATE</dateColumn>
<interval>INTERVAL_CUSTOM</interval>
</timeFrameFilter>
</Report>
むずかしい・・・。
ReportについてのMetadata属性を表にするとキリがないので興味のある方は
ぜひこちらでご確認ください。
まとめ
ちなみに前回行った変更ももちろんできます。
グラフ部分も変えることができますが、個人的にはよくわからないので、
触らなかったです笑
カラム、条件を変えるくらいだと簡単なので一気にやってしまって作業効率をあげるってのはありですね。