当我使用 Classroom API 发布带有学生副本的作业时。我收到 对classroom.courses.courseWork 的 API 调用失败并出现错误:遇到内部错误
。
当我成功发布草稿,然后尝试使用 API 发布作业,或者当我尝试直接发布新作业时,会发生这种情况。
将作业更改为“仅查看”可以解决这两种情况下的发布问题,但您不会获得学生副本,并且在发布后无法将其更改回来,并且几乎总是需要学生副本。
我可以在发布草稿后在 Google Classroom 中手动发布,没有任何问题。我认为这与您在发布作业后无法制作学生副本的原因有关。
我在发布之前已经探查过,学生文件夹 ID 可用,但尚未创建。
var assignment = {
title: "Test File",
materials: [
{
driveFile:{
driveFile: {
id: "11klBA-80IQPaJHrpSyJHqVsK7BUWWAtoLFdwG0uJGfo",
title: "Sample Document"
},
shareMode: "STUDENT_COPY"
}
}
],
state: "PUBLISH",
workType: "ASSIGNMENT"
};
var id = Classroom.Courses.CourseWork.create(assignment, 24551294261)
Logger.log(id);
或
Classroom.Courses.CourseWork.patch( {"state": "PUBLISHED"},24551294261,46981225150,{updateMask:'state'});
对classroom.courses.courseWork.patch 的 API 调用失败并出现错误
随任一程序代码一起返回。如果将 Student_COPY 更改为 View ,则代码可以正常工作。我认为这是一个错误,API 没有手动发布的发布协议(protocol)。所以它失败了。我的猜测是创建 google 文件夹来存储文档。
我教 8 个类(class),手动发布每项作业需要很长时间,如果我犯错误,学生可能会错过作业。
希望找到解决方法或错误修复。我使用 API 发布部分是为了节省评分时间,部分是为了保持所有 8 个类(class)相同。我可以更新截止日期或说明,而不会意外遗漏任何人。我需要 API 来发布作业,以便它可以访问作业以进行更改。
最佳答案
我找到了解决方法。您无法使用 API 发布带有学生副本的作业。 您可以使用scheduledTime: future 5分钟,系统会为您发布。
您可以修补计划以在 5 分钟内打开它,而不是修补状态以发布现有作业。我有点痛苦,但为 8 节课发布 3 份作业花了我半个小时。 5 分钟的等待并不是一个糟糕的交易。我还没有测试过您可以将时间设置为距离现在多近。我使用 5 分钟来允许任何延迟。
顺便说一下,补丁仅适用于标题、描述、状态、dueDate、dueTime、maxPoints、scheduledTime、submissionModificationMode、topicId。 Material 不在 list 上。您无法更改与作业关联的链接或文档。
关于google-apps-script - 在 Google Classroom API 中发布带有学生副本的类(class)作业时出现内部错误 可能的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58707261/