我想为我的所有用户创建一个存储使用情况报告。要做到这一点,我使用AdminReports应用程序,就像这样(在谷歌的某个地方找到的例子。只需要调整"参数"one_answers"行"数组(:
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;
}, {});
}
我的问题是;帐户:drive_used_quota_in_mb"为您提供共享文件的驱动器使用情况(这与计算用户使用的存储空间无关(以确定他是否需要更多空间((。
我甚至尝试使用"accounts:used_quota_in_percentage",这似乎正是我所需要的,但它以与我相同的方式计算百分比:((驱动器+邮件(/总空间(*100,而且无法忽略共享文件。
我正在研究检查驱动器中每个文件的可能性,但你知道下一个问题:速度慢。。(仅适用于文档较少的1用户,需要1-2分钟(
有没有一种方法可以通过脚本、使用另一个类或在谷歌上为它做一些我没有看到的事情来做到这一点?
好的,没有问题,我只是吓坏了,因为一个用户的消费量是30Go,尽管他的账户只有2个月。
但在与他讨论后,他确实在一周前上传了大量文件,从那以后,他删除了这些文件
只在两天前执行脚本会得到正确的结果,因为他在这两天之间删除了这些文件。
我犯错误的原因是,我的脚本提供了一周前的统计数据(我没有意识到这一点(,我在网络界面上检查这些统计数据的真实性,这在今天是统计数据。