2

Я создаю страницу отчетов для своих клиентов, чтобы иметь возможность просматривать их данные в том формате, с которым они уже знакомы. До этого момента они получают .pdf с избранными метриками и пояснениями. Я хочу автоматизировать это с помощью API конверсий Google Analytics. У меня возникают проблемы с форматированием данных, прежде чем рисовать диаграммы. В частности, я хочу отображать продолжительность сеанса Avg в формате 00:00:00, а не в десятичном формате. Кроме того, я хотел бы обрезать страницы/сеанс до двух знаков после запятой.Отформатируйте данные в API API Google Analytics и визуализируйте с помощью API диаграмм

Вот код для диаграммы я рисую:

/** 
     * Create a table chart showing top Keywords by sessions with average session duration and pages/session 
     */ 

     var keywordChart = new gapi.analytics.googleCharts.DataChart({ 
      query: { 
      'dimensions': 'ga:keyword', 
      'metrics': 'ga:sessions,ga:avgSessionDuration,ga:pageviewsPerSession', 
      'sort': '-ga:sessions', 
      'start-date': '30daysAgo', 
      'end-date': 'yesterday', 
      'max-results': '10' 
      }, 
      chart: { 
      type: 'TABLE', 
      container: 'keyword-chart-container', 
      options: { 
       width: '100%' 
      } 
      } 
     }); 

     keywordChart.on('success', function(response) { 
      console.log(response.data.cols[2]); 
     }); 

Я признателен за любую помощь или понимание, спасибо за ваше время!


EDIT


Я изменил мой код, чтобы использовать Google Analytics API вместе с Charts API, однако я по-прежнему возникают проблемы, приобретающие Продолжительность Avg Session форматировать с использованием шаблона даты. Вот мой обновленный код:

var keywordChart = new gapi.analytics.report.Data({ 
    query: { 
    'dimensions': 'ga:keyword', 
    'metrics': 'ga:sessions,ga:avgSessionDuration,ga:pageviewsPerSession', 
    'sort': '-ga:sessions', 
    'start-date': '30daysAgo', 
    'end-date': 'yesterday', 
    'max-results': '10', 
    'output': 'dataTable' 
    } 
}); 

keywordChart.on('success', function(response) { 
    console.log(response.dataTable); 
    var data = new google.visualization.DataTable(response.dataTable); 
    var timeFormatter = new google.visualization.DateFormat({pattern: 'H:mm:ss'}); 
    var numFormatter = new google.visualization.NumberFormat({fractionDigits: 2}); 

    timeFormatter.format(data, 2); 
    numFormatter.format(data, 3); 

    var keywordsTable = new google.visualization.Table(document.getElementById('keyword-chart-container')); 
    keywordsTable.draw(data); 

}); 

Мне нужно разделить данные в данных [2] (24 * 60 * 60) перед нанесением рисунка, а также.

данные [2]/(24 * 60 * 60), которые затем должны быть помещены в шаблон «H: mm: ss» до того, как моя таблица будет нарисована.

У меня возникли проблемы с поиском в документации по диаграммам, как это сделать.

Снова любое понимание очень ценится, спасибо за ваше время!

+0

«gapi.analytics.googleCharts.DataChart» - это удобная функция, позволяющая быстро генерировать диаграмму за счет обработки ответа API. В основном он применяет клей между ['gapi.client.analytics.data.ga'] (https://developers.google.com/analytics/devguides/reporting/embed/v1/using-components#analytics_client_library) и [ API диаграмм] (https://developers.google.com/chart/interactive/docs/gallery). Если вы выполняете задачу, просто используйте API-интерфейс внедрения, чтобы запросить API Google Analytics, отформатировать ответ и передать его в API диаграмм. – Matt

+0

Вы также должны [проверить демонстрационный сайт с помощью встроенного API] (https://ga-dev-tools.appspot.com/embed-api/third-party-visualizations/), чтобы выяснить, что возможно. – Matt

+0

Чтобы отформатировать ответ от встроенного API, я оставил бы значение диаграммы пустым? В on. ('Success', function (response) {format и перейти к Charts API здесь}? – Pohsible

ответ

2

вы можете использовать DataView заменить data[2] с calculated column

предполагая data[2] это значение времени и приведет к действительной дате
new Date(data[2])

см следующий фрагмент ...

keywordChart.on('success', function(response) { 
    var data = new google.visualization.DataTable(response.dataTable); 

    var timeFormatter = new google.visualization.DateFormat({pattern: 'H:mm:ss'}); 

    // create view 
    var view = new google.visualization.DataView(data); 

    // include all columns from data 
    var columns = []; 
    for (var i = 0; i < data.getNumberOfColumns(); i++) { 
    columns.push(i); 
    } 

    // replace date column with calculation 
    columns[2] = { 
    calc: function (dt, r) { 
     return { 
     // value 
     v: new Date(dt.getValue(r, 2)), 
     // formatted value 
     f: timeFormatter.formatValue(new Date(dt.getValue(r, 2)))}; 
    }, 
    type: 'date', 
    label: data.getColumnLabel(2) 
    }; 
    view.setColumns(columns); 

    var keywordsTable = new google.visualization.Table(document.getElementById('keyword-chart-container')); 
    // draw chart with view 
    keywordsTable.draw(view); 
}); 

Очевидно, что вы можете сделать то же самое с колонкой чисел, используя numFormatter

+0

надеюсь, что это поможет ... – WhiteHat

+0

Это действительно помогает, спасибо! У меня по-прежнему возникают проблемы с правильной форматировкой даты. Значение в поле - это количество секунд, в течение которого выполнялся средний сеанс. Чтобы отобразить его в формате 00:00:00, перед форматированием мне нужно вычислить (значение в поле)/(24 * 60 * 60). 'timeFormatter.formatValue (новая дата (dt.getValue (r, 2))/(24 * 60 * 60))}; возвращает NaN: NaN: NaN и' timeFormatter.formatValue (новая дата (dt.getValue (r, 2)/(24 * 60 * 60)))}; 'возвращает неправильное значение. – Pohsible

+0

Как вы получаете API Analytics и API диаграмм для загрузки вместе. Когда я добавляю API диаграммы, я получаю ошибки JS. Но без этого я могу сделать все необходимое для диаграммы, но не могу форматировать числа. – Leeish

Смежные вопросы