Исходя из кода, похоже, что вы ранее уже использовали клиентские библиотеки Python (в частности, часть body=optionalArgs
).В JavaScript / Google Apps Script назначение параметров ключевых слов не является чем-то особенным, по крайней мере, не так, как в Python.
Формат , ожидаемый методами классов в клиентских библиотеках Google "Advanced Services" получены из спецификации HTTP REST API для связанного API.Для вызова Classroom.Courses.update
это courses#update
(или для вашего заголовка courses#patch
).
Спецификация REST API для update
:для 1 параметра пути (идентификатор курса) и тела запроса с ресурсом Course
.Как и во всех API Google, вы можете дополнительно добавить любой из Стандартных параметров запроса в качестве необязательного аргумента.Это количество - 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
позволяет использовать некоторый шаблон Course
ресурси применять только указанные его части к указанному курсу.Если бы вы использовали update
вместо patch
, вы бы изменили все поля, чтобы использовать значения шаблона:
function patchedViaTemplate_(templateCourse, courseId, fieldsToAlter) {
const options = { updateMask: fieldsToAlter };
return Classroom.Courses.patch(templateCourse, courseId, options);
}