Admin SDK 报告服务
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
借助 Admin SDK Reports 服务,您可以在 Apps 脚本中使用 Admin SDK 的 Reports API。通过此 API,Google Workspace 网域的管理员(包括经销商)可以为其网域创建自定义使用情况报告。
参考
如需详细了解此服务,请参阅 Admin SDK Reports API 的参考文档。与 Apps 脚本中的所有高级服务一样,Admin SDK Reports 服务使用的对象、方法和参数均与公共 API 相同。如需了解详情,请参阅方法签名是如何确定的。
如需报告问题并查找其他支持,请参阅 Admin SDK Reports 支持指南。
示例代码
以下示例代码使用 API 的版本 1。
生成登录活动报告
此示例会生成过去一周的登录活动报告,并以电子表格的形式呈现。报告中包含时间、用户和登录结果。
生成用户使用情况报告
此示例会生成上周今天的用户使用情况报告(以电子表格的形式)。该报告包含日期、用户、上次登录时间、收到的电子邮件数量和拥有的文档数量。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-31。
[null,null,["最后更新时间 (UTC):2025-08-31。"],[[["\u003cp\u003eThe Admin SDK Reports service enables Google Workspace administrators to create custom usage reports within Apps Script, using the Admin SDK's Reports API.\u003c/p\u003e\n"],["\u003cp\u003eThis advanced service requires prior enabling and mirrors the functionalities of the public API, using the same objects, methods, and parameters.\u003c/p\u003e\n"],["\u003cp\u003eSample code is provided demonstrating how to generate login activity reports (including time, user, and login result) and user usage reports (including date, user, last login, emails received, and docs created) for a specified timeframe, outputting the data into a spreadsheet.\u003c/p\u003e\n"],["\u003cp\u003eComprehensive reference documentation and a support guide for the Admin SDK Reports API are available for further information and assistance.\u003c/p\u003e\n"]]],[],null,["# Admin SDK Reports Service\n\nThe Admin SDK Reports service allows you to use the Admin SDK's\n[Reports API](/admin-sdk/reports/v1/get-start/overview) in\nApps Script. This API gives administrators\nof Google Workspace domains (including resellers) the\nability to create custom usage reports for their domain.\n| **Note:** This is an advanced service that must be [enabled before use](/apps-script/guides/services/advanced).\n\nReference\n---------\n\nFor detailed information on this service, see the\n[reference documentation](/admin-sdk/reports/v1/reference) for the Admin SDK\nReports API. Like all advanced services in Apps Script, the Admin SDK Reports\nservice uses the same objects, methods, and parameters as the public API. For more information, see [How method signatures are determined](/apps-script/guides/services/advanced#how_method_signatures_are_determined).\n\nTo report issues and find other support, see the\n[Admin SDK Reports support guide](/admin-sdk/reports/support).\n\nSample code\n-----------\n\nThe sample code below uses [version 1](/admin-sdk/groups-migration/v1/reference)\nof the API.\n\n### Generate login activity report\n\nThis sample generates a login activity report for the last week as a\nspreadsheet. The report includes the time, user, and login result. \nadvanced/adminSDK.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/advanced/adminSDK.gs) \n\n```javascript\n/**\n * Generates a login activity report for the last week as a spreadsheet. The\n * report includes the time, user, and login result.\n * @see https://developers.google.com/admin-sdk/reports/reference/rest/v1/activities/list\n */\nfunction generateLoginActivityReport() {\n const now = new Date();\n const oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n const startTime = oneWeekAgo.toISOString();\n const endTime = now.toISOString();\n\n const rows = [];\n let pageToken;\n let page;\n do {\n page = AdminReports.Activities.list('all', 'login', {\n startTime: startTime,\n endTime: endTime,\n maxResults: 500,\n pageToken: pageToken\n });\n const items = page.items;\n if (items) {\n for (const item of items) {\n const row = [\n new Date(item.id.time),\n item.actor.email,\n item.events[0].name\n ];\n rows.push(row);\n }\n }\n pageToken = page.nextPageToken;\n } while (pageToken);\n\n if (rows.length === 0) {\n console.log('No results returned.');\n return;\n }\n const spreadsheet = SpreadsheetApp.create('Google Workspace Login Report');\n const sheet = spreadsheet.getActiveSheet();\n\n // Append the headers.\n const headers = ['Time', 'User', 'Login Result'];\n sheet.appendRow(headers);\n\n // Append the results.\n sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);\n\n console.log('Report spreadsheet created: %s', spreadsheet.getUrl());\n}\n```\n\n### Generate user usage report\n\nThis sample generates a user usage report for this day last week as a\nspreadsheet. The report includes the date, user, last login time, number of\nemails received, and number of docs owned. \nadvanced/adminSDK.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/advanced/adminSDK.gs) \n\n```javascript\n/**\n * Generates a user usage report for this day last week as a spreadsheet. The\n * report includes the date, user, last login time, number of emails received,\n * and number of drive files created.\n * @see https://developers.google.com/admin-sdk/reports/reference/rest/v1/userUsageReport/get\n */\nfunction generateUserUsageReport() {\n const today = new Date();\n const oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);\n const timezone = Session.getScriptTimeZone();\n const date = Utilities.formatDate(oneWeekAgo, timezone, 'yyyy-MM-dd');\n\n const parameters = [\n 'accounts:last_login_time',\n 'gmail:num_emails_received',\n 'drive:num_items_created'\n ];\n const rows = [];\n let pageToken;\n let page;\n do {\n page = AdminReports.UserUsageReport.get('all', date, {\n parameters: parameters.join(','),\n maxResults: 500,\n pageToken: pageToken\n });\n if (page.warnings) {\n for (const warning of page.warnings) {\n console.log(warning.message);\n }\n }\n const reports = page.usageReports;\n if (reports) {\n for (const report of reports) {\n const parameterValues = getParameterValues(report.parameters);\n const row = [\n report.date,\n report.entity.userEmail,\n parameterValues['accounts:last_login_time'],\n parameterValues['gmail:num_emails_received'],\n parameterValues['drive:num_items_created']\n ];\n rows.push(row);\n }\n }\n pageToken = page.nextPageToken;\n } while (pageToken);\n\n if (rows.length === 0) {\n console.log('No results returned.');\n return;\n }\n const spreadsheet = SpreadsheetApp.create('Google Workspace User Usage Report');\n const sheet = spreadsheet.getActiveSheet();\n\n // Append the headers.\n const headers = ['Date', 'User', 'Last Login', 'Num Emails Received',\n 'Num Drive Files Created'];\n sheet.appendRow(headers);\n\n // Append the results.\n sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);\n\n console.log('Report spreadsheet created: %s', spreadsheet.getUrl());\n}\n\n/**\n * Gets a map of parameter names to values from an array of parameter objects.\n * @param {Array} parameters An array of parameter objects.\n * @return {Object} A map from parameter names to their values.\n */\nfunction getParameterValues(parameters) {\n return parameters.reduce((result, parameter) =\u003e {\n const name = parameter.name;\n let value;\n if (parameter.intValue !== undefined) {\n value = parameter.intValue;\n } else if (parameter.stringValue !== undefined) {\n value = parameter.stringValue;\n } else if (parameter.datetimeValue !== undefined) {\n value = new Date(parameter.datetimeValue);\n } else if (parameter.boolValue !== undefined) {\n value = parameter.boolValue;\n }\n result[name] = value;\n return result;\n }, {});\n}\n```"]]