#google-apps-script #google-sheets #google-api
#google-apps-script #google-sheets #google-api
Вопрос:
Я использую скрипт API для ввода одной метрики для Google Таблиц в режиме реального времени. Я могу заставить работать одну метрику, но я не могу понять, как использовать более одной и отображать ее на листе.
// get time stamp of query run
function setTimeStamp(sheetName) {
SpreadsheetApp.getActive().getSheetByName(sheetName)
.getRange('C2').setValue(new Date())
}
// gaGet data
function gaGet(tableId, metrics, options) {
// Apply standard options
options = options || {};
options['max-results'] = options['max-results'] || '10000';
// If errors persist up to 5 times then terminate the program.
for (var i = 0; i < 5; i ) {
try {
return Analytics.Data.Realtime.get(tableId, metrics, options); // 503
} catch (err) {
// https://developers.google.com/analytics/devguides/reporting/core/v3/coreErrors
if (err.message.indexOf('a server error occurred') > -1) {
Logger.log('Backend Error');
// Note: Don't listen to Google's reply and retry request after 2 minutes
Utilities.sleep(2 * 60 * 1000);
} else if (err.message.indexOf('User Rate') > -1) {
Logger.log('Rate Limit Error');
// Exponential Backoff
Utilities.sleep(1000 * Math.pow((i 1), 2));
} else if (err.message.indexOf('too many concurrent connections') > -1) {
Logger.log('Concurrent Connections Error');
// Exponential Backoff
Utilities.sleep(1000 * Math.pow((i 1), 2));
} else {
Logger.log(err);
throw err;
}
}
}
throw 'Error. Max retries reached';
}
// rt pages query
function getRtPages(){
// set up the parameters and variables
var sheetName = 'web'; // The name of the sheet (not the Spreadsheet) we want to write the data e.g Sheet1
var tableId = 'ga:214164114'; // The id of the view to query the data from e.g ga:123456
//var startDate = 'yyyy-MM-dd'; // The start date of the query with the appropriate format e.g 2018-04-01 (1 April 2018)
//var endDate = 'yyyy-MM-dd'; // The end date of the query with the appropriate format e.g 2018-04-30 (30 April 2018)
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetName);
// set Up the query arguments
var metrics = ['rt:pageviews'];
var options = {
'dimensions': 'rt:pagePath',
//'filters': '',
'sort': '-rt:pageviews',
//'segment': '',
'samplingLevel': 'HIGHER_PRECISION',
'max-results': '100' // To limit the results to 100. Maximum number of results: 10000
}
var metrics2 = ['rt:activeUsers'];
var options2 = {
'dimensions': 'rt:country',
//'filters': '',
'sort': '-rt:activeUsers',
//'segment': '',
'samplingLevel': 'HIGHER_PRECISION',
'max-results': '100' // To limit the results to 100. Maximum number of results: 10000
}
// fetch the report
var report = gaGet(tableId, metrics, options, metrics1, options1);
// clear current sheet data
var range = sheet.getRange("A2:D101");
range.clear();
// fetch the report
var report = gaGet(tableId, metrics, options);
// clear current sheet data
var range = sheet.getRange("A2:D101");
range.clear();
// set timestamp of query run
setTimeStamp(sheetName)
var data = report.rows;
// get the range to write and write the results
try {
var writeRange = sheet.getRange(2, 1, data.length, data[0].length) // Read reference for getRange arguments
writeRange.setValues(data);
}
catch(err) {
Logger.log(err);
}
}
// test ga query to return json to log
function test(){
var x = Analytics.Data.Realtime.get('ga:214164114', 'rt:pageviews')
Logger.log(x)
}
Я добавил дополнительную переменную metrics и попробовал несколько способов, пытаясь перенести их в таблицу, но я что-то упускаю.
Любые мысли приветствуются.
Комментарии:
1. Вы имеете в виду, что вы пытались объединить эти показатели в своем коде
rt:pageviews
иrt:country
в одном запросе? После проверки ссылки на географические измерения и метрики ,rt:country
является ли измерение не метрикой?2. Я только сейчас понял, о чем я прошу, прочитав еще немного. Я хотел бы иметь возможность использовать rt: pageviews и rt: activeUsers для метрик и rt:: country и rt: pageviews для измерений в одном запросе. Я могу, или, конечно, создать несколько таблиц Google, но это кажется немного болезненным для каждого нового измерения и показателя, которые меня могут попросить добавить.