是否可通过AppScript或Sheets统计Google Workspace各应用的用户使用数量
问题解答
完全可以通过AppScript结合Google Sheets实现该需求,具体方案如下:
前置要求
- 你需要拥有Google Workspace超级管理员权限,或被分配了Admin SDK Reports API的访问权限,否则无法拉取组织内全量用户的使用数据
- 首次使用前需要在AppScript编辑器中开启对应API服务
具体实现步骤
- 新建一个空白Google Sheets,点击顶部菜单栏「扩展程序」-「Apps 脚本」打开脚本编辑器
- 在编辑器左侧侧边栏点击「服务」按钮,搜索并添加
Admin SDK Reports API服务 - 清空编辑器默认代码,粘贴如下代码:
function getWorkspaceAppUsageCount() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 清空旧数据并写入表头 sheet.clear(); sheet.appendRow(["用户邮箱", "Gmail最后使用时间", "Sheets最后使用时间", "Docs最后使用时间", "Slides最后使用时间"]); // 自定义统计的时间范围,示例为统计过去30天的活跃用户 const statsDays = 30; const startDate = new Date(); startDate.setDate(startDate.getDate() - statsDays); const startTime = startDate.toISOString(); try { let pageToken = null; // 分页拉取全量用户使用数据 do { const reportRes = AdminReports.UserUsageReport.get('all', startTime, { pageToken: pageToken, parameters: 'gmail:last_interaction_time,sheets:last_interaction_time,docs:last_interaction_time,slides:last_interaction_time' }); if (reportRes.items) { reportRes.items.forEach(userReport => { // 格式化参数为键值对方便读取 const paramMap = userReport.parameters.reduce((res, item) => { res[item.name] = item.value; return res; }, {}); // 写入单条用户数据 sheet.appendRow([ userReport.entity.userEmail, paramMap['gmail:last_interaction_time'] || '未使用', paramMap['sheets:last_interaction_time'] || '未使用', paramMap['docs:last_interaction_time'] || '未使用', paramMap['slides:last_interaction_time'] || '未使用' ]); }); } pageToken = reportRes.nextPageToken; } while (pageToken); // 自动写入统计公式计算各应用活跃用户数 const lastDataRow = sheet.getLastRow(); sheet.getRange(lastDataRow + 2, 1).setValue(`过去${statsDays}天各应用活跃用户统计`); sheet.getRange(lastDataRow + 3, 1, 2, 5).setValues([ ['统计项', 'Gmail', 'Sheets', 'Docs', 'Slides'], ['活跃用户数', `=COUNTIF(B2:B${lastDataRow},"<>未使用")`, `=COUNTIF(C2:C${lastDataRow},"<>未使用")`, `=COUNTIF(D2:D${lastDataRow},"<>未使用")`, `=COUNTIF(E2:E${lastDataRow},"<>未使用")` ] ]); // 自适应列宽 sheet.autoResizeColumns(1, 5); SpreadsheetApp.getUi().alert('数据拉取与统计完成'); } catch (err) { SpreadsheetApp.getUi().alert(`操作失败:${err.message},请确认你拥有对应管理员权限且已开启Reports API服务`); } }
- 保存项目,点击运行按钮,首次运行时按照提示完成授权即可,运行完成后返回Sheets就能看到明细数据和自动统计的活跃用户数。
注意事项
- 如果没有组织管理员权限,只能拉取你个人的使用数据,无法统计全组织用户
- 可以通过修改代码中的
statsDays参数调整统计的时间范围,比如改成7就是统计近7天活跃用户 - 你也可以根据需求自定义统计逻辑,比如筛选特定部门用户、排除已离职账号等
内容的提问来源于stack exchange,提问作者King Michael King
相关产品推荐
相关产品推荐

