如何使用Classroom.Courses.patch()更改课程所有者

时间:2017-12-04 14:34:02

标签: google-apps-script google-classroom

我尝试使用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()才能做到这一点。

3 个答案:

答案 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'}); 
}