Google Reporting API:客户使用情况报告 [英] Google Reporting API: Customer Usage Report

查看:121
本文介绍了Google Reporting API:客户使用情况报告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从我的域为所有用户生成使用情况报告.我希望能够使用以下参数:num_1day_logins,num_7day_logins,num_30day_logins.这样一来,我可以展示我们域中Google Apps的采用率是如何增加或减少的.下面的代码来自Google.这接近我想要做的,但不完全是.我认为可以根据自己的意愿自定义此代码,但我不知道如何.

I am trying to generate a usage report from my domain on all my users. I would like to be able to use these parameters: num_1day_logins, num_7day_logins,num_30day_logins. So that I can show how adoption of Google Apps in our domain is increasing or decreasing. The code below is from Google. Which is close to what I would like to do, but not exactly. I think it's possible to customize this code to what I would like to do, but I don't know how.

谢谢.

function generateUserUsageReport() {
var today = new Date();
var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
var timezone = Session.getTimeZone();
var date = Utilities.formatDate(oneWeekAgo, timezone, 'yyyy-MM-dd');
var parameters = [
'accounts:last_login_time',
'gmail:num_emails_received',
'docs:num_docs'
];
var rows = [];
var pageToken, page;
do {
page = AdminReports.UserUsageReport.get('all', date, {
  parameters: parameters.join(','),
  maxResults: 500,
  pageToken: pageToken
});
var reports = page.usageReports;
if (reports) {
  for (var i = 0; i < reports.length; i++) {
    var report = reports[i];
    var parameterValues = getParameterValues(report.parameters);
    var row = [
      report.date,
      report.entity.userEmail,
      parameterValues['accounts:last_login_time'],
      parameterValues['gmail:num_emails_received'],
      parameterValues['docs:num_docs']
    ];
    rows.push(row);
  }
}
pageToken = page.nextPageToken;
} while (pageToken);

if (rows.length > 0) {
var spreadsheet = SpreadsheetApp.create('Google Apps User Usage Report');
var sheet = spreadsheet.getActiveSheet();

// Append the headers.
var headers = ['Date', 'User', 'Last Login', 'Num Emails Received',
    'Num Docs'];
sheet.appendRow(headers);

// Append the results.
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);

Logger.log('Report spreadsheet created: %s', spreadsheet.getUrl());
 } else {
 Logger.log('No results returned.');
}
}

/**
* Gets a map of parameter names to values from an array of parameter    objects.
* @param {Array} parameters An array of parameter objects.
* @return {Object} A map from parameter names to their values.
*/
function getParameterValues(parameters) {
return parameters.reduce(function(result, parameter) {
var name = parameter.name;
var value;
if (parameter.intValue !== undefined) {
  value = parameter.intValue;
} else if (parameter.stringValue !== undefined) {
  value = parameter.stringValue;
} else if (parameter.datetimeValue !== undefined) {
  value = new Date(parameter.datetimeValue);
} else if (parameter.boolValue !== undefined) {
  value = parameter.boolValue;
}
result[name] = value;
return result;
}, {});
}

推荐答案

这是包含您要查找的参数的代码.

Here is the code with the parameters you were looking for.

function generateUserUsageReport() {
var today = new Date();
var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
var timezone = Session.getScriptTimeZone();
var date = Utilities.formatDate(oneWeekAgo, timezone, 'yyyy-MM-dd');
var parameters = [
'accounts:num_1day_logins',
'accounts:num_7day_logins',
'accounts:num_30day_logins'
];
var rows = [];
var pageToken, page;
do {
page = AdminReports.CustomerUsageReports.get(date, {
  parameters: parameters.join(','),
  maxResults: 500,
  pageToken: pageToken
});
var reports = page.usageReports;
if (reports) {
  for (var i = 0; i < reports.length; i++) {
    var report = reports[i];
    var parameterValues = getParameterValues(report.parameters);
    var row = [
      report.date,
      parameterValues['accounts:num_1day_logins'],
      parameterValues['accounts:num_7day_logins'],
      parameterValues['accounts:num_30day_logins']
    ];
    rows.push(row);
  }
}
pageToken = page.nextPageToken;
} while (pageToken);

if (rows.length > 0) {
var spreadsheet = SpreadsheetApp.create('Google Apps User Usage Report');
var sheet = spreadsheet.getActiveSheet();

// Append the headers.
var headers = ['Date', '1day_logins', '7day_logins',
    '30day_logins'];
sheet.appendRow(headers);

// Append the results.
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);

Logger.log('Report spreadsheet created: %s', spreadsheet.getUrl());
 } else {
 Logger.log('No results returned.');
}
}

/**
* Gets a map of parameter names to values from an array of parameter    objects.
* @param {Array} parameters An array of parameter objects.
* @return {Object} A map from parameter names to their values.
*/
function getParameterValues(parameters) {
return parameters.reduce(function(result, parameter) {
var name = parameter.name;
var value;
if (parameter.intValue !== undefined) {
  value = parameter.intValue;
} else if (parameter.stringValue !== undefined) {
  value = parameter.stringValue;
} else if (parameter.datetimeValue !== undefined) {
  value = new Date(parameter.datetimeValue);
} else if (parameter.boolValue !== undefined) {
  value = parameter.boolValue;
}
result[name] = value;
return result;
}, {});
}

这篇关于Google Reporting API:客户使用情况报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆