我正试图从谷歌分析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。”有没有人知道为什么在使用变量时失败?
答案 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);}
这现在可以正常运作了!