我尝试使用Apps脚本更改Google课堂课程的所有者。
根据文档,我可以使用.patch()
来完成。这是相关的脚本:
var body = {
ownerId: owner
}
var mask={
mask:'ownerId'
}
var optArgs = (mask, body);
var course = {
name: classname,
courseState: state,
description: desc,
descriptionHeading: descHead,
room: room,
section: section
};
Classroom.Courses.patch(course, courseId, optArgs )
当我运行它来更新所有者时,我收到以下错误消息
无法更新收到无效的JSON有效负载。未知名称" ownerId":无法绑定查询参数。 Field' ownerId'在请求消息中找不到。
只是为了展示对比,我改为运行.update()
:
Classroom.Courses.update(course, courseId)
...课程详情的其余部分已完美更新,但.update()
不允许您更改所有者;它必须是.patch()
才能做到这一点。
答案 0 :(得分:0)
根据文档,这是按预期工作的。
courses.update没有ownerId
个参数,只有id
。
但如果您选中courses.patch,则其updateMask
参数会将ownerId
作为有效字段接受。
有关此服务的详细信息,请参阅Classroom API的reference documentation。
答案 1 :(得分:0)
遇到同样的问题,问题是optArgs - 你只需要那里的掩码,而不是你改变的数据。
var optArgs = { mask: 'ownerId' };
var course = {
name: classname,
courseState: state,
description: desc,
descriptionHeading: descHead,
room: room,
section: section,
ownerId: owner
};
Classroom.Courses.patch(course, courseId, optArgs );
答案 2 :(得分:0)
我刚刚尝试了这个并且它有效。考虑到这一点,为了使其工作,用户必须已经是特定班级的教师,然后这将使该教师成为所有者。
function changeTeacherOwner() {
var course = { 'ownerId': "EMAIL OF TEACHER" };
Classroom.Courses.patch(course, "COURSE ID", {'updateMask':'ownerId'});
}