Устанавливаем консольную утилиту под названием jq
для парсинга JSON
строк.
sudo apt-get install -y jq
# ключ -y означает, что нам не придется отвечать на вопросы - авто-соглашение, interactive=no
Выполним в консоли скрипт для установки нужных нам переменных окружения для работы с Google AdWords API.
export \
GOOGLEAPIS_ADWORDS_VERSION="v201705" \
GOOGLEAPIS_APPLICATION_NAME="Test App" \
GOOGLEAPIS_DEVELOPER_TOKEN="" \
GOOGLEAPIS_CLIENT_CUSTOMER_ID="" \
GOOGLEAPIS_CLIENT_ID="" \
GOOGLEAPIS_CLIENT_SECRET="" \
GOOGLEAPIS_OAUTH2_REFRESH_TOKEN=""
Получить от Google API через OAuth 2.0 новый access token для работы с API и
записать его в переменную окружения GOOGLEAPIS_OAUTH2_ACCESS_TOKEN
.
export GOOGLEAPIS_OAUTH2_ACCESS_TOKEN=$(curl \
-X POST \
-H "Accept: application/json" \
-d "client_id=$GOOGLEAPIS_CLIENT_ID&client_secret=$GOOGLEAPIS_CLIENT_SECRET&grant_type=refresh_token&refresh_token=$GOOGLEAPIS_OAUTH2_REFRESH_TOKEN" \
https://www.googleapis.com/oauth2/v4/token | jq -r '.access_token')
Перед тем как скачивать отчет из гугла, нам нужно составить SOAP запрос.
В файле ReportAdwords_FROM_TO_request.xml
будет храниться тело запроса.
Устанавливаем тип, сегмент, интервал отчета.
В результате будет вот так SOAP-запрос:
export REPORT_TYPE="ADGROUP_PERFORMANCE_REPORT" \
REPORT_SEGMENT="AdNetworkType2" \
REPORT_DATE_FROM="$(date '+%Y%m%d' -d '-90 day')" \
REPORT_DATE_TO="$(date '+%Y%m%d')" && \
export REPORT_SOAP_REQUEST='<?xml version="1.0" encoding="UTF-8"?>
<reportDefinition xmlns="https://adwords.google.com/api/adwords/cm/'$GOOGLEAPIS_ADWORDS_VERSION'">
<selector>
<fields>'$REPORT_SEGMENT'</fields>
<fields>Date</fields>
<fields>CampaignId</fields>
<fields>CampaignName</fields>
<fields>CampaignStatus</fields>
<fields>AdGroupId</fields>
<fields>AdGroupName</fields>
<fields>AdGroupStatus</fields>
<fields>Impressions</fields>
<fields>Clicks</fields>
<fields>Cost</fields>
<fields>AveragePosition</fields>
<!--<fields>AllConversions</fields>-->
<!--<fields>AllConversionValue</fields>-->
<fields>Conversions</fields>
<fields>ConversionValue</fields>
<!--<fields>SearchImpressionShare</fields>-->
<!--<fields>SearchRankLostImpressionShare</fields>-->
<dateRange>
<min>'$REPORT_DATE_FROM'</min>
<max>'$REPORT_DATE_TO'</max>
</dateRange>
</selector>
<reportName>Custom Adgroup Performance Report</reportName>
<reportType>'$REPORT_TYPE'</reportType>
<dateRangeType>CUSTOM_DATE</dateRangeType>
<downloadFormat>CSV</downloadFormat>
</reportDefinition>
' && \
export REPORT_REQUEST_FILENAME="ReportAdwords_${REPORT_DATE_FROM}_${REPORT_DATE_TO}_request.xml" && \
echo $REPORT_SOAP_REQUEST > $REPORT_REQUEST_FILENAME
Теперь скачиваем CSV репорт в файл, название которого соответствует шаблону ReportAdwords_FROM_TO_response.csv
:
export REPORT_FILENAME="ReportAdwords_${REPORT_DATE_FROM}_${REPORT_DATE_TO}_response.csv" && \
curl \
-X POST \
-H "Authorization: Bearer $GOOGLEAPIS_OAUTH2_ACCESS_TOKEN" \
-H "developerToken: $GOOGLEAPIS_DEVELOPER_TOKEN" \
-H "clientCustomerId: $GOOGLEAPIS_CLIENT_CUSTOMER_ID" \
-H "skipReportHeader: true" \
-H "skipColumnHeader: true" \
-H "skipReportSummary: true" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-H "Expect: 100-continue" \
-d "__rdxml=$REPORT_SOAP_REQUEST" \
https://adwords.google.com/api/adwords/reportdownload/$GOOGLEAPIS_ADWORDS_VERSION > $REPORT_FILENAME && \
echo "" && \
echo "Report file path: $REPORT_FILENAME"