在AdWords中无法导出AdWords导出的CSV报告解析

我创建了一个表格,试图用从AdWords导出的CSV文件中的数据填充表格。以下是我的表格-

在AdWords中无法导出AdWords导出的CSV报告解析

仅当ajax调用成功时才显示该表,因为我向其发出ajax请求的页面返回了表HTML。如您所见,我正在获取表的列,并且表已正确填充,但是由于某种原因我没有获取值。

通过功能生成表格

        $campaigns_data = getcampaignsCSVData($account_name);           

        $campaigns_columns = $campaigns_data['columns'];                
        $campaigns_values = $campaigns_data['values'];                          


        if(!empty($campaigns_columns) && !empty($campaigns_values)){
            echo '<h4>Campaign Totals</h4>'.PHP_EOL;        
            getcampaignsTable($campaigns_columns,$campaigns_values,$campaigns_included_cols,'Clicks','DESC');
        }

生成活动表的功能

function getcampaignsTable($columns,$values,$included_cols,$sort_by='',$sort_dir='ASC'){

        $values_by_column_key = array();        

        foreach($values as $key=>$row){                     
            $processed_cols = array();

            foreach($row as $key=>$col){                
                if(is_numeric(str_replace(',','',$col))){
                    $col = str_replace(',$col);
                }

                if($col[0] == '$'){             
                    $processed_cols[$columns[$key]] = str_replace('$',$col);                 
                }else{
                    $processed_cols[$columns[$key]] = $col;                 
                }
            }

            $values_by_column_key[] = $processed_cols;
        }                   

        if(!empty($sort_by)){
            usort($values_by_column_key,function($a,$b)use($sort_by,$sort_dir){                                    

                if($sort_dir == 'ASC'){
                    return $a[$sort_by] > $b[$sort_by];                             
                }elseif($sort_dir == 'DESC'){                   
                    return $a[$sort_by] < $b[$sort_by];         
                }                               
            });
        }   

        echo '<table class="data-table">'.PHP_EOL;
            echo '<thead>'.PHP_EOL;
                echo '<tr>'.PHP_EOL;

                    if(!empty($included_cols)){
                        foreach($included_cols as $col){
                            echo '<th>'.$col['label'].'</th>'.PHP_EOL;
                        }
                    }

                echo '</tr>'.PHP_EOL;               
            echo '</thead>'.PHP_EOL;        
            echo '<tbody>'.PHP_EOL;                     

            $row_count = 0;         

            foreach($values_by_column_key as $key1=>$row){
                $row_count++;

                if($row_count <= RESULT_LIMIT){
                    echo '<tr>'.PHP_EOL;

                    foreach($included_cols as $key2=>$inc_cols){
                        if($inc_cols['format'] == 'currency'){
                            echo '<td>'.$inc_cols['currency_symbol'].$row[$key2].'</td>'.PHP_EOL;                                                       
                        }else{                                                  
                            echo '<td>'.$row[$key2].'</td>'.PHP_EOL;
                        }
                    }                                                           

                    echo '</tr>'.PHP_EOL;
                }
            }                       

            echo '</tbody>'.PHP_EOL;                            
        echo '</table>'.PHP_EOL;                
    }

读取和解析CSV文件的功能

function getcampaignsCSVData($account){

        $data = array();

        $dir = ADWORDS_REPORTS_DIR.$account.'/';

        $filename = ADWORDS_CAMPAIGN_FILE;      
        $filepath = $dir.$filename; 

        $row_count = 0;

        if(file_exists($filepath)){         
            $csvfile = @fopen($filepath,'r');

            if($csvfile){                               
                while(!feof($csvfile)){                 
                    $row = fgets($csvfile);

                    $row = preg_replace("/[^a-zA-Z ]/","",$row);

                    $row_count++;

                    $row_data = ''; 


                    if(stristr($row,CAMPAIGNS_REPORT_IN_COLUMNS_WORD)){             
                        $row_data = str_replace('Impr.','Impressions',$row);                    
                        $row_data = str_replace('Interactions',$row_data);

                        $data['columns'] = str_getcsv($row_data);                                                               
                        $columns_row_index = $row_count;


                    } elseif($row_count > $columns_row_index && !empty($columns_row_index)){
                        $row_data = $row;                       

                        if(!stristr($row,'Total') && !empty($row)){                     
                            $data['values'][] = str_getcsv($row_data);                          
                        }                       
                    }                   
                }
            }           

            fclose($csvfile);
        }else{
            $data = false;
        }           

        return $data;       
    }

此代码已经使用了很长时间,但是最近突然停止了工作,没有进行任何更改。我似乎无法解决这个问题,因为我找不到任何错误。请帮忙。谢谢!

peterbright 回答:在AdWords中无法导出AdWords导出的CSV报告解析

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3055881.html

大家都在问