通过管理API导入数据

时间:2017-04-26 21:38:49

标签: php google-analytics google-analytics-api

我遇到了使用Google Analytics管理API处理数据导入的问题。

当我通过Google的PHP库将数据发送到API时,上传的文件在“管理上传”部分中可见,并且看起来格式正确的CSV数据,尽管该文件的名称只是一个随机字符串而没有最后是“.csv”。请参阅以下此方法的相同代码:

$client = new \Google_Client();
$client->setAuthConfig($config);
$client->setScopes(['https://www.googleapis.com/auth/analytics', 'https://www.googleapis.com/auth/analytics.edit']);

$analytics = new Google_Service_Analytics($client);

try {
    $analytics->management_uploads->uploadData(
    *****, // Account ID
    *****, // Property ID
    *****, // Data Set ID
        [
            'data'       => $csvData, // contents of tmpfile, created with fputcsv, gathered with fread 
            'mimeType'   => 'application/octet-stream',
            'uploadType' => 'media',
        ]
    );
} catch (\Exception $e) {
    $response['error'] = 'Analytics Upload Error';
}

虽然数据集似乎已正确上传,但在任何报告中都找不到相应的数据。下载文件并将名称更改为以“.csv”结尾并通过Web界面手动上载后,数据变为可用。我认为,这意味着尽管拥有正确的内容,但Google没有正确处理文件而没有“.csv”扩展名。

因此,对于我的第二次尝试,我发现使用curl而不是自己的库的参考;这样做允许我传递一个实际的csv文件,而不仅仅是一个文件的内容。示例如下:

$url  = 'https://www.googleapis.com/upload/analytics/v3/management/accounts/' . ** Account ID ** . '/webproperties/' . ** Property ID ** . '/customDataSources/' . ** Data Set ID ** . '/uploads?access_token=' . ** Access Token **;
$file = function_exists('curl_file_create') ? curl_file_create($filename, 'application/octet-stream', 'csvData.csv') : '@' . realpath($filename);
$curl = curl_init();

$postFields = ['file_contents' => $file];

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);

同样,生成的(命名)文件会在上传管理视图中显示“.csv”扩展名和准确数据,但报告工具仍然无法显示。与第一次相同:通过Web界面下载,重命名和上传按预期工作,数据可在报告中访问。

文档没有提到有关格式化,标题等应该采取的任何其他步骤。我不确定要采取哪些进一步的步骤,因为似乎没有关于出错的有用信息 - 事实上所有看起来都能正常工作,但未手动上传时数据无法用于报告。

0 个答案:

没有答案