使用补丁更新课堂 courseState
Update Classroom courseState using patch
我正在尝试编写一个 Apps 脚本函数来存档 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);
}
}
}
当运行上面的代码时出现以下错误:
Invalid number of arguments provided. Expected 2-3 only (line 10, file "ArchiveAll")
使用 Google Apps 脚本和 Classroom
高级服务执行此操作的正确方法是什么?
根据代码,您之前可能使用过 Python 客户端库(特别是 body=optionalArgs
部分)。在 JavaScript / Google Apps Script 中,关键字参数分配不是问题,至少不像 Python.
中那样
format expected by class methods in Google's "Advanced Services" client libraries are derived from the HTTP REST API specification for the associated API. For the Classroom.Courses.update
call, this is courses#update
(or per your title, courses#patch
).
update
的 REST API 规范适用于 1 个路径参数(课程 ID)和具有 Course
资源的请求正文。与所有 Google API 一样,您可以另外添加任何 Standard Query Parameters 作为可选参数。此计数 - 2 个必需,1 个可选)与您收到的错误消息相对应:
Invalid number of arguments provided. Expected 2-3 only
因此,您的函数应该类似于:
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
查询参数。与其他可选参数(如标准查询参数)一样,这是作为最后一个参数传递给 class 方法的对象:
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
允许您使用某些模板 Course
资源,并且仅将其指定部分应用于指定课程。如果您要使用 update
而不是 patch
,您将更改所有字段以使用模板的值:
function patchedViaTemplate_(templateCourse, courseId, fieldsToAlter) {
const options = { updateMask: fieldsToAlter };
return Classroom.Courses.patch(templateCourse, courseId, options);
}
我正在尝试编写一个 Apps 脚本函数来存档 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);
}
}
}
当运行上面的代码时出现以下错误:
Invalid number of arguments provided. Expected 2-3 only (line 10, file "ArchiveAll")
使用 Google Apps 脚本和 Classroom
高级服务执行此操作的正确方法是什么?
根据代码,您之前可能使用过 Python 客户端库(特别是 body=optionalArgs
部分)。在 JavaScript / Google Apps Script 中,关键字参数分配不是问题,至少不像 Python.
format expected by class methods in Google's "Advanced Services" client libraries are derived from the HTTP REST API specification for the associated API. For the Classroom.Courses.update
call, this is courses#update
(or per your title, courses#patch
).
update
的 REST API 规范适用于 1 个路径参数(课程 ID)和具有 Course
资源的请求正文。与所有 Google API 一样,您可以另外添加任何 Standard Query Parameters 作为可选参数。此计数 - 2 个必需,1 个可选)与您收到的错误消息相对应:
Invalid number of arguments provided. Expected 2-3 only
因此,您的函数应该类似于:
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
查询参数。与其他可选参数(如标准查询参数)一样,这是作为最后一个参数传递给 class 方法的对象:
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
允许您使用某些模板 Course
资源,并且仅将其指定部分应用于指定课程。如果您要使用 update
而不是 patch
,您将更改所有字段以使用模板的值:
function patchedViaTemplate_(templateCourse, courseId, fieldsToAlter) {
const options = { updateMask: fieldsToAlter };
return Classroom.Courses.patch(templateCourse, courseId, options);
}