使用Google Apps Script调用Classroom patch接口更新作业状态报错如何解决
问题根因与解决方法
第一个报错(updateMask is required)原因
updateMask是patch方法的入参,不是接口返回对象的属性,第一种写法在调用接口后才给返回值赋值updateMask,API无法接收该参数,因此触发必填校验报错。
第二个报错(ProjectPermissionDenied)原因
存在两个核心问题:
- 代码存在变量名拼写错误:
changeState函数定义的作业ID参数为assingId,调用patch方法时传入的是assID,大小写不匹配导致传入了无效的作业ID,触发权限类报错。 - OAuth授权范围不足,或者关联的Google Cloud项目Classroom API配置异常。
正确可运行代码
function publicarBorradores() { const courseId = "320315007220"; const assingId = "320315007244"; const updateBody = { state: "PUBLISHED" }; // updateMask作为第四项可选参数传入 Classroom.Courses.CourseWork.patch(updateBody, courseId, assingId, { updateMask: "state" }); }
权限排查步骤
- 打开Apps Script项目的「项目设置」,勾选「在appsscript.json清单中显示"appsscript.json"编辑器」,回到编辑器打开该文件,确认
oauthScopes字段包含以下必要权限:
"oauthScopes": [ "https://www.googleapis.com/auth/classroom.coursework", "https://www.googleapis.com/auth/classroom.courses" ]
- 运行一次修正后的函数,在弹出的授权窗口中选择你作为班级所有者的Google账号,授予对应的Classroom编辑权限。
- 进入关联的Google Cloud项目,搜索「Classroom API」,确认API状态为已启用,若已禁用重新开启即可。
内容的提问来源于stack exchange,提问作者Joaquin Pagliettini
相关产品推荐
相关产品推荐

