在 Google 课堂 API 中使用学生副本发布课程作业时出现内部错误 可能的错误?
Posted
技术标签:
【中文标题】在 Google 课堂 API 中使用学生副本发布课程作业时出现内部错误 可能的错误?【英文标题】:Internal error when publishing coursework with student copies in google clas-s-room API Possible bug? 【发布时间】:2020-03-01 14:03:59 【问题描述】:当我使用 Clas-s-room API 发布带有学生副本的作业时。我得到API call to clas-s-room.courses.courseWork failed with error: Internal error encountered
。
当我成功发布草稿,然后尝试使用 API 发布作业,或者当我尝试直接发布新作业时,会发生这种情况。
将作业更改为“仅查看”可以解决这两种情况下的发布问题,但是您不会获得学生副本,并且在发布后您无法将其更改回来,并且几乎总是需要学生副本。
我可以在发布草稿后在谷歌课堂中手动发布,没有任何问题。我认为这与您在发布作业后无法制作学生副本的原因有关。
我在发布前进行了调查,学生文件夹 id 可用但尚未创建。
var assignment =
title: "Test File",
materials: [
driveFile:
driveFile:
id: "11klBA-80IQPaJHrpSyJHqVsK7BUWWAtoLFdwG0uJGfo",
title: "Sample Document"
,
shareMode: "STUDENT_COPY"
],
state: "PUBLISH",
workType: "ASSIGNMENT"
;
var id = Clas-s-room.Courses.CourseWork.create(assignment, 24551294261)
Logger.log(id);
或
Clas-s-room.Courses.CourseWork.patch( "state": "PUBLISHED",24551294261,46981225150,updateMask:'state');
API call to clas-s-room.courses.courseWork.patch failed with error
与任一程序代码一起返回。如果将 Student_COPY 更改为查看,则代码可以正常工作。我相信这是一个错误,API 没有手动点击发布的一些发布协议。所以它失败了。我的猜测是创建 google 文件夹来存储文档。
我教 8 个班级手动发布每个作业需要很长时间,如果我犯了错误,学生可能会错过作业。
希望有解决方法或错误修复。我使用 API 发布部分是为了节省评分时间,部分是为了保持所有 8 个类相同。我可以更新到期日期或说明,而不会意外遗漏任何人。我需要 API 来发布作业,以便它可以访问作业以进行更改。
【问题讨论】:
【参考方案1】:我找到了解决方法。您不能使用 API 发布带有学生副本的作业。 您可以使用scheduledTime: 5分钟后,系统会为您发布。
除了修补状态来发布现有作业外,您还可以修补计划以在 5 分钟内将其打开。我有点痛苦,但为 8 节课发布 3 份作业需要我半个小时。 5 分钟的等待不是一个糟糕的交易。我还没有测试过你可以设置时间有多近。我使用 5 分钟来考虑任何延迟。
顺便说一下,patch 仅适用于 title、description、state、dueDate、dueTime、maxPoints、scheduledTime、submissionModificationMode、topicId。材料不在清单上。您不能更改与作业关联的链接或文档。
【讨论】:
【参考方案2】:由于我没有足够的声望点,Travis 是正确的。
UTC 祖鲁时间遵循以下格式: “预定时间”:“2020-06-08T01:34:55Z”,
要打印时间戳,请使用以下代码...确保在您的 Clas-s-room 函数中调用以下函数。
function schedulePost()
var now = new Date();
var extra = now.getMinutes()+5;//change the numeric time for the spread
console.log(Utilities.formatDate(now, 'Etc/GMT', 'yyyy-MM-dd\'T\'HH:'+extra+':ss.SSS\'Z\''));
;
【讨论】:
【参考方案3】:如果我打算为将来安排它,那么我将其包含在资源中:
resource =
...
state: "DRAFT";
...
;
要立即发布,只需将状态设置为已发布:
resource =
...
state: "PUBLISHED";
...
;
任务会立即结束。然后无论哪种方式:
var creq = gapi.client.clas-s-room.courses.courseWork.create(courseId:
smeCourseId,resource: resource);
creq.execute(function(courseWork)
if (courseWork.error)
window.alert(courseWork.error.message);
);
【讨论】:
以上是关于在 Google 课堂 API 中使用学生副本发布课程作业时出现内部错误 可能的错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Google Apps 脚本在电子表格中查找按钮的位置?