Google AdWords API – Teil 5
In meinem letzten Teil zeige ich noch wie man weitere Informationen für Keywords abfragen kann. Genauer gesagt geht es darum auszulesen, wieviel Umsatz ein Keyword innerhalb einer gewissen Zeitspanne (zB ein Tag) gebracht hat. Dieser Wert (totalConvValue) war lange Zeit Bestandteil des AdGroupCriterionServices, leider jetzt nicht mehr. Aus diesem Grund müssen wir diesen Wert über einen Report abfragen.
ReportDefinitionService
Reports fragt man über das ReportDefinitionService ab. Das funktioniert eigentlich fast genau so wie bei den anderen bereits vorgestellten Services. Leider kann man sich so einen Report nur als ganzes schicken lassen und das im Format XML oder CSV. Aus diesem Grund ist das etwas umständlich, da wir die gelieferte Datei noch parsen müssen. Der Code dafür schaut folgendermaßen aus:
function DownloadKeywordReport(AdWordsUser $user, $filePath, $adwords_version, $keyword_id, $days) { // Load the service, so that the required classes are available. $user->LoadService('ReportDefinitionService', $adwords_version); // Create selector. $selector = new Selector(); $selector->fields = array('KeywordText', 'Id', 'TotalConvValue'); // Filter out deleted criteria. //$selector->predicates[] = new Predicate('Status', 'NOT_IN', array('DELETED')); $selector->predicates[] = new Predicate('Id', 'IN', array($keyword_id)); $dateRange = new DateRange(); $str1 = '-1 days'; $str2 = '-1 days'; if($days > 0) { $str1 = '-'.$days.' days'; $str2 = '-'.$days.' days'; } $dateRange->min = date('Ymd', strtotime($str1)); $dateRange->max = date('Ymd', strtotime($str2)); $selector->dateRange = $dateRange; // Create report definition. $reportDefinition = new ReportDefinition(); $reportDefinition->selector = $selector; $reportDefinition->reportName = 'Criteria performance report #' . uniqid(); $reportDefinition->dateRangeType = 'CUSTOM_DATE'; $reportDefinition->reportType = 'KEYWORDS_PERFORMANCE_REPORT'; $reportDefinition->downloadFormat = 'XML'; // Exclude criteria that haven't recieved any impressions over the date range. $reportDefinition->includeZeroImpressions = FALSE; // Set additional options. $options = array('version' => $adwords_version, 'returnMoneyInMicros' => FALSE); ReportUtils::DownloadReport($reportDefinition, $filePath, $user, $options); }
Wie bei den anderen Reports laden wir zuerst das Service. Danach erstellen wir einen Selector und definieren was wir alles geliefert haben möchten. Hier legen wir den Typ des Reports fest, für unseren Fall einen KEYWORDS_PERFORMANCE_REPORT. Beim Format wählen wir XML. Mit dem Befehl DownloadReport holen wir uns den Report und speichern die Datei ab. Den Pfad mit Dateinamen haben wir der Funktion übergeben.
Report parsen
Nun haben wir ein XML mit den gewünschten Daten. Im letzten Schritt müssen wir nun aus der XML Datei unseren Wert herauslesen. Das geht zum Beispiel so:
private function getTotalConvValuefromXML($file) { $xml = simplexml_load_file($file); foreach($xml->children() as $child) { if(strcmp($child->getName(),'table')===0) { foreach($child->children() as $row) { if(strcmp($row->getName(),'row')===0) { //echo "TotalConvValue: ".$row['totalConvValue']; return $row['totalConvValue']; } } } } return 0; }
Nun haben wir auch einen Wert aus einem Report von Google AdWords ausgelesen.
Teil 1 | Teil 2 | Teil 3 | Teil 4 | Teil 5 | Teil 6