Google apps script 使用修补程序更新教室课程

Google apps script 使用修补程序更新教室课程,google-apps-script,google-classroom,Google Apps Script,Google Classroom,我正在尝试编写一个应用程序脚本函数来归档Google教室中的一整套课程 function myFunction() { var response = Classroom.Courses.list(); var optionalArgs = {'courseState': 'ARCHIVED'}; var courses = response.courses; if (courses && courses.length > 0) { for (i =

我正在尝试编写一个应用程序脚本函数来归档Google教室中的一整套课程

function myFunction() {
  var response = Classroom.Courses.list();
  var optionalArgs = {'courseState': 'ARCHIVED'};

  var courses = response.courses;
  if (courses && courses.length > 0) {
    for (i = 0; i < courses.length; i++) {
      var course = courses[i];

      Classroom.Courses.update(course.name, course.id, {'updateMask':'courseState'}, body=optionalArgs); // Line 10
      //Logger.log('%s (%s) [%s]', course.name, course.id, course.enrollmentCode);
    }
  }
}
函数myFunction(){
var response=教室.Courses.list();
var optionalArgs={'courseState':'ARCHIVED'};
var课程=响应课程;
如果(课程和课程长度>0){
对于(i=0;i
运行上述代码时,我遇到以下错误:

提供的参数数量无效。预计只有2-3个(第10行,文件“ArchiveAll”)


使用Google Apps脚本和
教室
高级服务的正确方法是什么?

根据代码,您可能以前使用过Python客户端库(特别是
body=optionalArgs
部分)。在JavaScript/GoogleApps脚本中,关键字参数赋值不是一件事,至少不像Python中那样

这些参数是从关联API的HTTP REST API规范派生的。对于
教室.Courses.update
呼叫,这是(或根据您的标题,)

update
的RESTAPI规范用于1个路径参数(课程id)和一个带有
course
资源的请求主体。和所有GoogleAPI一样,您还可以添加任意参数作为可选参数。此计数(2必需,1可选)与您收到的错误消息相对应:

提供的参数数量无效。预计2-3只

因此,您的函数应该类似于:

function updateCourse_(course) {
  course.courseState = 'ARCHIVED';
  const options = {
    fields: "id,name,courseState" // data sent back in the response.
  };
  return Classroom.Courses.update(course, course.id, options);
}
patch
方法还有一个可选参数,即
updateMask
查询参数。与其他可选参数(如标准查询参数)一样,该参数作为最后一个参数传递给类方法:

function patchCourse_(courseId) {
  const newMetaData = {
    courseState: 'ARCHIVED',
    // other options, must be valid Course fields per patch documentation:
    // https://developers.google.com/classroom/reference/rest/v1/courses/patch#query-parameters
  };
  const options = {
    updateMask: "courseState", // CSV string of things you alter in the metadata object 
    fields: "id,name,courseState" // data sent back in the response
  };
  return Classroom.Courses.patch(newMetaData, courseId, options);
}
updateMask
允许您使用一些模板
课程
资源,并仅将其指定部分应用于指定课程。如果要使用
update
而不是
patch
,则需要更改所有字段以使用模板的值:

function patchedViaTemplate_(templateCourse, courseId, fieldsToAlter) {
  const options = { updateMask: fieldsToAlter };
  return Classroom.Courses.patch(templateCourse, courseId, options);
}