【问题标题】:User Drive's usage without shared files用户驱动器在没有共享文件的情况下的使用情况
【发布时间】:2020-02-26 15:22:08
【问题描述】:

我想为我的所有用户创建一份存储使用情况报告。为此,我使用 AdminReports 应用程序,就像这样(在某个地方的谷歌示例中找到。只需要调整“参数”和“行”数组):

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:gmail_used_quota_in_mb',
    'accounts:drive_used_quota_in_mb',
    'accounts:total_quota_in_mb ',
    'accounts:used_quota_in_percentage'
  ];
  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,
          parseInt(parameterValues['accounts:drive_used_quota_in_mb']),
          parseInt(parameterValues['accounts:gmail_used_quota_in_mb']),
          parseInt(parameterValues['accounts:total_quota_in_mb']),
          ((parseInt(parameterValues['accounts:gmail_used_quota_in_mb'])+parseInt(parameterValues['accounts:drive_used_quota_in_mb']))/parseInt(parameterValues['accounts:total_quota_in_mb']))*100
        ];
        rows.push(row);
      }
    }
    pageToken = page.nextPageToken;
  } while (pageToken);

  if (rows.length > 0) {
    var spreadsheet = SpreadsheetApp.getActive();
    var sheet = spreadsheet.getActiveSheet();

    // Append the headers.
    var headers = [['Date', 'User mail', 'Drive use','Gmail use', 'Total available',
        'Total(%)']];
    sheet.getRange(1, 1, 1, 6).setValues(headers);

    // Append the results.
    sheet.getRange(2, 1, rows.length, 6).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;
  }, {});
}

我遇到的问题是参数“accounts:drive_used_quota_in_mb”为您提供了共享文件的驱动器使用情况(这与计算用户使用的存储空间无关(以确定他是否需要更多空间))。

我什至尝试使用 'accounts:used_quota_in_percentage' 这似乎正是我所需要的,但它以与我相同的方式计算百分比:((驱动器 + 邮件)/总空间)*100,没有办法忽略共享文件这样做。

我正在研究检查驱动器的每个文件的可能性,但您知道下一个问题:速度慢..(仅对于文档很少的 1User,需要 1-2 分钟)

有没有办法通过脚本,使用另一个类,或者在谷歌中为它完成的我没有看到的东西?

感谢您的阅读,请原谅我的英语。

【问题讨论】:

  • 好吧,我也许有我的答案,而且……我(几乎)是愚蠢的。 adminReports 只能在 2 天前(不是今天)播放。在这个脚本中,我有 1 周的延迟,这可能证明了我注意到的 google web 界面与此导出结果之间的差异。此外,我的错误发生是因为我有一个使用 30go 驱动器的用户,而现在他是 0Go。但它确实发生了这样的事情仍然是可信的(他储存了 30Go 然后删除了它)。我观察我明天得到的结果等等......然后回到这里写下它作为答案如果它是答案。
  • 嗨!你设法解决了你的问题吗?如果是这样,您能否将您的解决方案正式化为社区的答案?如果没有,您是否还有计算内存使用时考虑共享文件的问题?

标签: google-apps-script google-sheets google-domains google-domain-api


【解决方案1】:

好吧,没有问题,我只是吓坏了,因为一个用户的消费量是 30Go,虽然他的账户只有 2 个月。

但是和他商量之后,他确实在一个星期前上传了重磅文件,然后就删除了。

仅在 2 天前执行该脚本给出了正确的结果,因为他在这两个日期之间删除了这些文件。

我犯错的原因是我的脚本提供了 1 周前的统计数据(我没有意识到这一点),并且我正在网络界面上检查这些统计数据的真实性,这表明了现在的统计数据。

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    相关资源
    最近更新 更多