Apple Search Ads API报告POST方法错误

0 python api apple-search-ads

我正在尝试通过Apple Search Ads API获取报告数据。因此,我使用了-H ... \ -d“ @ TestSearchTermReport.json” -X POST“ / v1 / reports / campaigns / {cId} / searchterms”

我已包含所有标题和凭据。以下是POST正文的json数据文件的内容:{“ startTime”:“ 2016-11-13”,“ endTime”:“ 2016-11-13”,“ timezone”:“ UTC”,“粒度“:” DAILY“,”选择器“:{” orderBy“:[{” field“:” spend“,” sortOrder“:” DESCENDING“}],” fields“:[” spend“,” taps“,”转换“,” avgCPA“,” avgCPC“,” ttr“,” conversionRate“],” pagination“:{” offset“:0,” limit“:1000}},” groupBy“:” countryCode“,” returnRowTotals“:错误,

但是,我收到以下错误消息:

{“数据”:null,“分页”:null,“错误”:{“错误”:[{“ messageCode”:“ INVALID_JSON_REQUEST”,“ message”:“这是无效的json。无法解析该请求” ,“ field”:“ Line#:1 Column#:3”}]}}

我已经通过不同的方式尝试了很多次,但是仍然没有用。有什么聪明的人可以帮助我吗?

提前致谢!

Mat*_*ley 5

我自己一直在为此API苦苦挣扎,文档并不完全用户友好!

您似乎在这里遇到了一些问题:

  • 时区和粒度是枚举,因此它们的值必须是数字,而不是字符串。每次我使用timezone字段打电话时,实际上我仍然遇到错误,因此暂时将其省略,直到找到解决方案为止。
  • 您的某些字段名称不正确;支出,avgCPC和countryCode分别应为localSpend,avgCPT和COUNTRY_CODE。
  • 分组依据字段应为列表。

在使用python时,请尝试以下操作:

import requests

org_id = <YOUR_ORG_ID>
certificate_path = '<PATH_TO_YOUR_CERTIFICATE>'
certificate_key_path = '<PATH_TO_YOUR_CERTIFICATE_KEY>'
campaign_id = <YOUR_CAMPAIGN_ID>


headers = {"Authorization": "orgId=%s" % org_id}    
payload = {
                "startTime": "2016-11-13", 
                "endTime": "2016-11-13",
                "granularity": 1, 
                "selector": {
                    "orderBy":[{"field":"localSpend","sortOrder":"DESCENDING"}], 
                    "fields": ["localSpend", "taps", "conversions", "avgCPA", "avgCPT", "ttr", "conversionRate"], 
                    "pagination": { "offset": 0, "limit": 1000 }
                    }, 
                "groupBy": ["COUNTRY_CODE"], 
                "returnRowTotals": False, 
                "returnRecordsWithNoMetrics": False
            }
url = 'https://api.searchads.apple.com/api/v1/reports/campaigns/%s/searchterms' % campaign_id
response = requests.post(url, cert=(certificate_path, certificate_key_path), json=payload, headers=headers)
print(response.text)
Run Code Online (Sandbox Code Playgroud)

这为我返回了成功的答案。希望它也对您有用!