首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Adwords将AWQL csv报告中的微计算机转换成货币

用Adwords将AWQL csv报告中的微计算机转换成货币
EN

Stack Overflow用户
提问于 2014-09-13 03:44:16
回答 1查看 1.7K关注 0票数 1

我在AWQL中有这个查询,我使用报告::DownloadReportWithAwql以CSV格式获得响应

代码语言:javascript
复制
select Date, Clicks, Cost from ACCOUNT_PERFORMANCE_REPORT during LAST_30_DAYS

我需要将CSV中的成本数据从micros转换为帐户中的货币(成本/ 1000000)。

此外,我还需要能够使用 any AWQL查询转换响应中的任何成本数据,例如,解决方案还必须适用于此查询:

代码语言:javascript
复制
SELECT CampaignName, KeywordText, Cost, CostPerConversion, QualityScore FROM KEYWORDS_PERFORMANCE_REPORT DURING LAST_7_DAYS

从v201406开始,returnMoneyInMicros标头不再有效,并且值总是以micros的形式返回。https://developers.google.com/adwords/api/docs/guides/reporting-concepts#money

这是我在堆栈溢出中的第一个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-15 16:42:33

最后,我做到了,并且为我自己做得很好。

代码语言:javascript
复制
    //data is a string with data in micros in csv format
    $data = $this->DownloadCriteriaReportWithAwql($awql);

    //start micros conversion
    $count = 0;
    $costpos = array();
    $newarray = array();
    foreach(preg_split("/((\r?\n)|(\r\n?))/", $data) as $line){

        $linearray = str_getcsv($line);

        if($count == 0) {
            //adwords report title
            $newarray[] = $linearray;
            $count++;
            continue;
        }

        if($count == 1) {
            //columns report header
            $postvalue = 0;

            foreach($linearray as $value){
                if (strpos($value,'Cost') !== false) {
                    $costpos[] = $postvalue;
                }
                $postvalue++;
            }

            $newarray[] = $linearray;
            $count++;
            continue;
        }

        if(!empty($costpos)) {

            foreach($costpos as $costpostval){

                if(isset($linearray[$costpostval])) {
                    $linearray[$costpostval] = $linearray[$costpostval] / 1000000;
                }

            }
        }

        $newarray[] = $linearray;
        $count++;
    }


    $tmpfname = tempnam(sys_get_temp_dir(), "FOO");
    $outstream = fopen($tmpfname, "r+");
    foreach($newarray as $newline){
        fputcsv($outstream, $newline);
    }
    fclose($outstream);
    //end micros conversion - $tmpfname temp file with cost in currency csv formated
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25819604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档