使用Google脚本获取Meet数据时遇Bad Request错误求助
解决Google Meet数据获取的Bad Request错误
常见问题排查与修复方案
权限与API启用检查
确认已在Google Cloud Console启用Admin SDK API,脚本绑定账号需具备对应权限:若获取域内其他用户数据,需配置域范围委派;若获取自身数据,确保账号能访问自己的Meet活动记录。参数格式严格校验
调用reports.activities.list时,参数必须完全符合要求:userKey:当前用户填me,域内其他用户填完整邮箱,不能用不规范用户名。applicationName:固定为meet,拼写不能出错。startTime/endTime:必须是RFC 3339格式(如2024-05-01T00:00:00Z、2024-05-31T23:59:59Z),注意月份的有效日期范围(比如2月避免无效日期)。
正确参数示例:
const requestParams = { userKey: 'target-user@your-domain.com', applicationName: 'meet', startTime: '2024-05-01T00:00:00Z', endTime: '2024-05-31T23:59:59Z', maxResults: 1000 }; const meetResponse = AdminReports.Activities.list(requestParams);分页逻辑补充
若用户当月Meet记录超过1000条,需处理分页(通过nextPageToken循环获取所有数据),避免请求异常:let allMeetActivities = []; let pageToken = null; do { const requestParams = { userKey: 'target-user@your-domain.com', applicationName: 'meet', startTime: '2024-05-01T00:00:00Z', endTime: '2024-05-31T23:59:59Z', maxResults: 1000, pageToken: pageToken }; const meetResponse = AdminReports.Activities.list(requestParams); if (meetResponse.items) allMeetActivities = allMeetActivities.concat(meetResponse.items); pageToken = meetResponse.nextPageToken; } while (pageToken);数据统计逻辑修正
从返回数据中筛选有效通话记录(eventName为call_end的条目),提取时长并统计:let totalCallSeconds = 0; let callCount = 0; allMeetActivities.forEach(activity => { if (activity.eventName === 'call_end') { callCount++; const durationParam = activity.parameters.find(p => p.name === 'call_duration'); if (durationParam) totalCallSeconds += parseInt(durationParam.value); } }); // 转换为易读格式 const totalHours = Math.floor(totalCallSeconds / 3600); const totalMinutes = Math.floor((totalCallSeconds % 3600) / 60);
内容的提问来源于stack exchange,提问作者EagleEye
相关产品推荐
相关产品推荐

