用户使用情况报告-Gmail参数未显示/未定义Google Admin SDK-Reports API

问题描述

我正在使用此代码来检索用户使用情况报告。我可以从12个中获取7个参数。

enter image description here

问题:

  1. 可以合并帐户和gmail参数吗?如果是,我如何解决代码显示与“上次登录”相同的格式?

所有显示“未定义”: 'gmail:timestamp_last_access', 'gmail:timestamp_last_imap', 'gmail:timestamp_last_pop', 'gmail:timestamp_last_webmail'

  1. “帐户状态”为“有效”,“已暂停”,“已删除”等参数参考是什么?我尝试搜索,但没有运气。

我在下面使用此代码。预先感谢您的时间和帮助!

function generateUserReport() {
  var today = new Date();
  var twoDaysAgo = new Date(today.getTime() - 2 * 24 * 60 * 60 * 1000);
  var timezone = Session.getScriptTimeZone();
  var date = Utilities.formatDate(twoDaysAgo,timezone,"yyyy-MM-dd");

  var parameters = [
    'accounts:first_name','accounts:last_name','accounts:is_super_admin','accounts:last_login_time','accounts:gmail_used_quota_in_mb','accounts:drive_used_quota_in_mb','gmail:timestamp_last_access','gmail:timestamp_last_imap','gmail:timestamp_last_pop','gmail:timestamp_last_webmail'
  ];
  var rows = [];
  var pagetoken;
  var page;
  do {
    page = AdminReports.UserUsageReport.get('all',date,{
      parameters: parameters.join(','),maxResults: 500,pagetoken: pagetoken
    });
    if (page.warnings) {
      for (var i = 0; i < page.warnings.length; i++) {
        var warning = page.warnings[i];
        Logger.log(warning.message);
      }
    }
    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:first_name'],parameterValues['accounts:last_name'],parameterValues['accounts:is_super_admin'],parameterValues['accounts:last_login_time'],parameterValues['accounts:gmail_used_quota_in_mb'],parameterValues['accounts:drive_used_quota_in_mb'],parameterValues['gmail:timestamp_last_access'],parameterValues['gmail:timestamp_last_imap'],parameterValues['gmail:timestamp_last_pop'],parameterValues['gmail:timestamp_last_webmail']
        ];
        rows.push(row);
      }
    }
    pagetoken = page.nextPagetoken;
  } while (pagetoken);

  if (rows.length > 0) {
    var spreadsheet = SpreadsheetApp.getActive();
    var sheet = spreadsheet.getSheetByName('UserSheet');
    sheet.clear();

    // Append the headers.
    var headers = ['Date','User','First Name','Last Name','Admin Account Status','Last Login','Email Usage','Drive Usage','Last Access Date','IMAP','POP','WEBMAIL'];
    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;
  },{});
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)