Google Analytics V4 Hello Analytics + проверка статуса подтверждения запроса перед запуском BatchGet () - PullRequest
1 голос
/ 19 января 2020
  1. Я выполняю несколько запросов GA согласно API отчетов v4 (PHP)

  2. Я перебираю несколько Просмотр идентификаторов, некоторые из которых не имеют правильных разрешений. (Я знаю, какие разрешения требуются, однако иногда у меня нет необходимого доступа по той или иной причине). Когда это происходит, я получаю сообщение об ошибке 403: "User does not have sufficient permissions for this profile." ... что я понимаю

  3. Пока я перебираю идентификаторы, если один идентификатор представления возвращает такую ​​ошибку, он ломает мой l oop.

  4. Я хотел бы проверить состояние запроса перед выполнением $analytics->reports->batchGet( $body );, чтобы он не сломал мой l oop. (т.е. не запускайте его, если он возвращает ошибку).

  5. Мой вопрос: Какой метод можно вызвать, чтобы проверить состояние запроса перед запуском batchGet()?

Мой код

foreach($view_ids as $view_id){
    // Create the DateRange object.
    $dateRange = new Google_Service_AnalyticsReporting_DateRange();
    $dateRange->setStartDate("2015-06-15");
    $dateRange->setEndDate("2015-06-30");

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

    //Create the Dimensions object.
    $browser = new Google_Service_AnalyticsReporting_Dimension();
    $browser->setName("ga:browser");

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

    $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
    $body->setReportRequests( array( $request) );

    // THIS IS WHERE I'M GETTING STUCK, DON'T KNOW WHICH METHOD TO CALL
    //$request_status_code = $analyticsreporting->reports->[whichMethod]???
    if($request_status_code == 200){
        return $analyticsreporting->reports->batchGet( $body );
    }
}

1 Ответ

0 голосов
/ 22 января 2020

Позвольте пользователю выбрать, к какому представлению он хочет получить доступ, затем запустите ваш код для этого представления. Этот код покажет вам, как составить список просмотров, к которым у пользователя есть доступ.

accountsummeries.list

<code>/**
 * Note: This code assumes you have an authorized Analytics service object.
 * See the Account Summaries Developer Guide for details.
 */

/**
 * Example #1:
 * Requests a list of all account summaries for the authorized user.
 */
try {
  $accounts = $analytics->management_accountSummaries
      ->listManagementAccountSummaries();
} catch (apiServiceException $e) {
  print 'There was an Analytics API service error '
        . $e->getCode() . ':' . $e->getMessage();

} catch (apiException $e) {
  print 'There was a general API error '
      . $e->getCode() . ':' . $e->getMessage();
}

/**
 * Example #2:
 * The results of the list method are stored in the accounts object.
 * The following code shows how to iterate through them.
 */
foreach ($accounts->getItems() as $account) {
  $html = <<<HTML
<pre>
Account id   = {$account->getId()}
Account kind = {$account->getKind()}
Account name = {$account->getName()}
HTML;

  // Iterate through each Property.
  foreach ($account->getWebProperties() as $property) {
    $html .= <<<HTML
Property id          = {$property->getId()}
Property kind        = {$property->getKind()}
Property name        = {$property->getName()}
Internal property id = {$property->getInternalWebPropertyId()}
Property level       = {$property->getLevel()}
Property URL         = {$property->getWebsiteUrl()}
HTML;

    // Iterate through each view (profile).
    foreach ($property->getProfiles() as $profile) {
      $html .= <<<HTML
Profile id   = {$profile->getId()}
Profile kind = {$profile->getKind()}
Profile name = {$profile->getName()}
Profile type = {$profile->getType()}
HTML;
    }
  }
  $html .= '
'; печатать $ html; }
...