我正在尝试通过 microsoft ads api 获取广告指标,例如成本、展示次数、点击次数等。我不习惯使用 SOAP API,但除了 api SDK 和 SOAP 之外,我还没有找到任何文档。
我能够通过 SOAP API 获取我的用户信息、客户帐户的营销活动和广告组,因为我知道我需要营销活动 ID 和广告组 ID,对吗?
好的,为了获得我想要的指标,我找到了 SubmitGenerateReport 和 PollGenerateReport 操作,并且由于我想要每个广告的每日指标,所以我认为对我来说最好的报告是 AdPerformanceReportRequest。
现在让我们来谈谈我被困住的地方。当我调用 SubmitGenerateReport 操作时,我收到以下错误作为响应:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode>s:Server</faultcode>
<faultstring>Invalid client data. Check the SOAP fault details for more information. TrackingId: 0182f18c-cad8-4497-8e81-9a63f6f42055.</faultstring>
<detail>
<ApiFaultDetail xmlns="https://bingads.microsoft.com/Reporting/v13" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<TrackingId xmlns="https://adapi.microsoft.com">0182f18c-cad8-4497-8e81-9a63f6f42055</TrackingId>
<BatchErrors/>
<OperationErrors>
<OperationError>
<Code>2015</Code>
<Details>No Dimension selected.</Details>
<ErrorCode>RequiredColumnsNotSelected</ErrorCode>
<Message>The specified report request does not specify all the required columns for this report type. Please submit a report request with the required columns for this report type, and optionally additional columns that are to be included in the report.</Message>
</OperationError>
</OperationErrors>
</ApiFaultDetail>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
如您所见,我无法通过响应看到缺少哪一列,这就是我在这里的原因。
这是我的要求:
网址: https://reporting.api.bingads.microsoft.com/Api/Advertiser/Reporting/v13/ReportingService.svc
标题:
Content-Type:text/xml
SOAPAction:SubmitGenerateReport
身体:
<s:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header xmlns="https://bingads.microsoft.com/Reporting/v13">
<AuthenticationToken i:nil="false">$token</AuthenticationToken>
<CustomerAccountId i:nil="false">$accountId</CustomerAccountId>
<CustomerId i:nil="false">$customerId</CustomerId>
<DeveloperToken i:nil="false">$developerToken</DeveloperToken>
</s:Header>
<s:Body>
<SubmitGenerateReportRequest xmlns="https://bingads.microsoft.com/Reporting/v13">
<ReportRequest i:nil="false" i:type="AdPerformanceReportRequest">
<ExcludeColumnHeaders i:nil="false">false</ExcludeColumnHeaders>
<ExcludeReportFooter i:nil="false">false</ExcludeReportFooter>
<ExcludeReportHeader i:nil="false">false</ExcludeReportHeader>
<Format i:nil="false">Csv</Format>
<FormatVersion i:nil="false">2.0</FormatVersion>
<ReportName i:nil="false">Ad Report</ReportName>
<ReturnOnlyCompleteData i:nil="false">false</ReturnOnlyCompleteData>
<!--These fields are applicable if the derived type attribute is set to AdPerformanceReportRequest-->
<Aggregation>Daily</Aggregation>
<Columns i:nil="false">
<AdPerformanceReportColumn>Clicks</AdPerformanceReportColumn>
</Columns>
<Filter i:nil="false">
<AccountStatus i:nil="false">Active Paused Inactive</AccountStatus>
<AdDistribution i:nil="false">Search Audience</AdDistribution>
<AdGroupStatus i:nil="false">Active Deleted Expired Paused</AdGroupStatus>
<AdStatus i:nil="false">Active Rejected Deleted Pending Paused</AdStatus>
<AdType i:nil="false">AppInstall DynamicSearchAd ExpandedText Product ResponsiveAd ResponsiveSearchAd Text</AdType>
<CampaignStatus i:nil="false">Active BudgetPaused Deleted Paused Suspended</CampaignStatus>
<DeviceType i:nil="false">Computer NonSmartPhone SmartPhone Tablet</DeviceType>
<Language i:nil="false">Portuguese English</Language>
</Filter>
<Scope i:nil="false">
<AccountIds i:nil="false" xmlns:a1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a1:long>$accountId</a1:long>
</AccountIds>
<AdGroups i:nil="false">
<AdGroupReportScope>
<AccountId>$accountId</AccountId>
<CampaignId>518735525</CampaignId>
<AdGroupId>1323813659647082</AdGroupId>
</AdGroupReportScope>
</AdGroups>
<Campaigns i:nil="false">
<CampaignReportScope>
<AccountId>$accountId</AccountId>
<CampaignId>518735525</CampaignId>
</CampaignReportScope>
</Campaigns>
</Scope>
<Time i:nil="false">
<CustomDateRangeEnd i:nil="false">
<Day>30</Day>
<Month>05</Month>
<Year>2024</Year>
</CustomDateRangeEnd>
<CustomDateRangeStart i:nil="false">
<Day>01</Day>
<Month>01</Month>
<Year>2024</Year>
</CustomDateRangeStart>
<ReportTimeZone i:nil="false">Brasilia</ReportTimeZone>
</Time>
</ReportRequest>
</SubmitGenerateReportRequest>
</s:Body>
</s:Envelope>
我通常通过 Postman 测试 api 端点,当我了解它是如何工作的时,我开始编写集成代码,所以这只是我测试 api 的工作原理,有人知道我缺少什么吗?
好的,我已与 Microsoft Ads 支持人员联系,这就是答案:
由于我使用的是每日聚合,因此有一个预期称为“TimePeriod”的列,这对于除摘要之外的所有聚合类型都是如此。如此处
所述我已经添加了 TimePeriod 列,现在我可以提交 AdPerformanceReport!
添加此列修复了错误,现在我得到了报告的 ID 作为响应,耶!
这回答了我的问题,但是,由于我现在必须下载报告,所以我需要测试它,而且我确实测试了它。
结果呢?我调用 PollGenerateReport 请求传递刚刚生成的报告中的 de id,然后获得下载报告的 url。可悲的是,这并不是故事的结局。
当我尝试使用提供给我的 URL 请求报告时,如下所示:https://bingadsappsstorageprod.blob.core.windows.net/hpr-reportdataapi.../Ad_Report.zip?.. .
我收到 <404 The specified resource does not exist.> 错误。
我不知道为什么会发生这种情况,Microsoft 支持目前正在帮助我解决此错误,我会在找到答案后立即编辑此答案。