使用php变量为google analytics API V4设置setStartDate和setEndDate

时间:2018-03-08 12:11:26

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

我正试图从谷歌分析API中提取一些简单的指标。手动设置日期时,它会按预期返回结果。当我尝试使用变量设置日期时,它不起作用。以下代码可以使用

$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("2017-12-01");
$dateRange->setEndDate("2017-12-31");

当我尝试做同样的事情但使用如图所示的变量时却没有。使用的网址参数是?startDate = 2017-12-01& endDate = 2017-12-31

$tstartDate=filter_var($_GET["startDate"], FILTER_SANITIZE_STRING);
$tendDate=filter_var($_GET["endDate"], FILTER_SANITIZE_STRING);
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("$tstartDate");
$dateRange->setEndDate("$tendDate");

谷歌返回的错误代码是“应该指定dateRange.startDate和dateRange.endDate。”有没有人知道为什么在使用变量时失败?

2 个答案:

答案 0 :(得分:1)

您似乎正在将包含变量名称的字符串解析为Google_Service_AnalyticsReporting_DateRange()。尝试将其解析为变量,就像我在下面一样。

$tstartDate=filter_var($_GET["startDate"], FILTER_SANITIZE_STRING);
$tendDate=filter_var($_GET["endDate"], FILTER_SANITIZE_STRING);
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate($tstartDate);
$dateRange->setEndDate($tendDate);

希望这有帮助!

答案 1 :(得分:0)

问题是我正在为getReport函数之外的URL参数执行GET ...

function getReport($analytics){


$VIEW_ID = "xxxxxx";

// Create the DateRange object.

$tstartDate=filter_var($_GET["startDate"], FILTER_SANITIZE_STRING);
$tendDate=filter_var($_GET["endDate"], FILTER_SANITIZE_STRING);
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate($tstartDate);
$dateRange->setEndDate($tendDate);

// Create the Metrics object.
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression("ga:sessions");
$sessions->setAlias("sessions");

// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
$request->setDateRanges($dateRange);
$request->setMetrics(array($sessions));

$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests(array( $request));
return $analytics->reports->batchGet($body);}

这现在可以正常运作了!