Admin SDK Reports Service

  • The Admin SDK Reports service in Apps Script allows Google Workspace administrators to create custom usage reports using the Admin SDK Reports API.

  • This is an advanced service that needs to be enabled before it can be used.

  • Detailed information and reference documentation for the Admin SDK Reports API are available.

  • Sample code is provided to demonstrate generating both login activity reports and user usage reports as spreadsheets.

The Admin SDK Reports service allows you to use the Admin SDK's Reports API in Apps Script. This API gives administrators of Google Workspace domains (including resellers) the ability to create custom usage reports for their domain.

Reference

For detailed information on this service, see the reference documentation for the Admin SDK Reports API. Like all advanced services in Apps Script, the Admin SDK Reports service uses the same objects, methods, and parameters as the public API. For more information, see How method signatures are determined.

To report issues and find other support, see the Admin SDK Reports support guide.

Sample code

The sample code below uses version 1 of the API.

Generate login activity report

This sample generates a login activity report for the last week as a spreadsheet. The report includes the time, user, and login result.

advanced/adminSDK.gs
/**
 * Generates a login activity report for the last week as a spreadsheet. The
 * report includes the time, user, and login result.
 * @see https://developers.google.com/admin-sdk/reports/reference/rest/v1/activities/list
 */
functiongenerateLoginActivityReport(){
constnow=newDate();
constoneWeekAgo=newDate(now.getTime()-7*24*60*60*1000);
conststartTime=oneWeekAgo.toISOString();
constendTime=now.toISOString();
constrows=[];
letpageToken;
letpage;
do{
page=AdminReports.Activities.list('all','login',{
startTime:startTime,
endTime:endTime,
maxResults:500,
pageToken:pageToken
});
constitems=page.items;
if(items){
for(constitemofitems){
constrow=[
newDate(item.id.time),
item.actor.email,
item.events[0].name
];
rows.push(row);
}
}
pageToken=page.nextPageToken;
}while(pageToken);
if(rows.length===0){
console.log('No results returned.');
return;
}
constspreadsheet=SpreadsheetApp.create('Google Workspace Login Report');
constsheet=spreadsheet.getActiveSheet();
// Append the headers.
constheaders=['Time','User','Login Result'];
sheet.appendRow(headers);
// Append the results.
sheet.getRange(2,1,rows.length,headers.length).setValues(rows);
console.log('Report spreadsheet created: %s',spreadsheet.getUrl());
}

Generate user usage report

This sample generates a user usage report for this day last week as a spreadsheet. The report includes the date, user, last login time, number of emails received, and number of docs owned.

advanced/adminSDK.gs
/**
 * Generates a user usage report for this day last week as a spreadsheet. The
 * report includes the date, user, last login time, number of emails received,
 * and number of drive files created.
 * @see https://developers.google.com/admin-sdk/reports/reference/rest/v1/userUsageReport/get
 */
functiongenerateUserUsageReport(){
consttoday=newDate();
constoneWeekAgo=newDate(today.getTime()-7*24*60*60*1000);
consttimezone=Session.getScriptTimeZone();
constdate=Utilities.formatDate(oneWeekAgo,timezone,'yyyy-MM-dd');
constparameters=[
'accounts:last_login_time',
'gmail:num_emails_received',
'drive:num_items_created'
];
constrows=[];
letpageToken;
letpage;
do{
page=AdminReports.UserUsageReport.get('all',date,{
parameters:parameters.join(','),
maxResults:500,
pageToken:pageToken
});
if(page.warnings){
for(constwarningofpage.warnings){
console.log(warning.message);
}
}
constreports=page.usageReports;
if(reports){
for(constreportofreports){
constparameterValues=getParameterValues(report.parameters);
constrow=[
report.date,
report.entity.userEmail,
parameterValues['accounts:last_login_time'],
parameterValues['gmail:num_emails_received'],
parameterValues['drive:num_items_created']
];
rows.push(row);
}
}
pageToken=page.nextPageToken;
}while(pageToken);
if(rows.length===0){
console.log('No results returned.');
return;
}
constspreadsheet=SpreadsheetApp.create('Google Workspace User Usage Report');
constsheet=spreadsheet.getActiveSheet();
// Append the headers.
constheaders=['Date','User','Last Login','Num Emails Received',
'Num Drive Files Created'];
sheet.appendRow(headers);
// Append the results.
sheet.getRange(2,1,rows.length,headers.length).setValues(rows);
console.log('Report spreadsheet created: %s',spreadsheet.getUrl());
}
/**
 * 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.
 */
functiongetParameterValues(parameters){
returnparameters.reduce((result,parameter)=>{
constname=parameter.name;
letvalue;
if(parameter.intValue!==undefined){
value=parameter.intValue;
}elseif(parameter.stringValue!==undefined){
value=parameter.stringValue;
}elseif(parameter.datetimeValue!==undefined){
value=newDate(parameter.datetimeValue);
}elseif(parameter.boolValue!==undefined){
value=parameter.boolValue;
}
result[name]=value;
returnresult;
},{});
}

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年11月14日 UTC.