【问题标题】:Using a php Variable to setStartDate and setEndDate for google analytics API V4使用 php 变量为谷歌分析 API V4 设置开始日期和设置结束日期
【发布时间】:2018-08-16 18:53:16
【问题描述】:

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

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

当我尝试做同样的事情但使用如图所示的变量时,它不会。使用的url参数是?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");

google 返回的错误代码是“dateRange.startDate 和 dateRange.endDate 都应该指定”。有谁知道为什么使用变量完成后会失败?

【问题讨论】:

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


    【解决方案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);
    

    希望这会有所帮助!

    【讨论】:

    • 您好,感谢您的关注,但我已经尝试过了,但仍然出现同样的错误。
    • 您是否尝试过 var_dumping 对象到屏幕或日志以便我们可以看到对象包含的内容?另外,如果你能告诉我抛出的异常,那就太好了!
    • 字符串(10)“2017-12-01”字符串(10)“2017-12-31”
    • 看起来您的对象正在使用正在解析的变量创建正常,您是否将 DateRange 对象解析为 Google 服务请求对象,如本文档中所示。 developers.google.com/analytics/devguides/reporting/core/v4/…
    • 好吧,看起来很相似,你是否实现了一个类似于函数 getReport($analytics) {} 的方法,因为它正在构建正在解析为 GA 的 URL。从您发布的异常中,我可以看到输入的日期没有到达 Google Analytic API
    【解决方案2】:

    问题是我在 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);}
    

    现在可以正常工作了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 2015-06-29
      相关资源
      最近更新 更多