当我使用课堂API发布作业和学生副本时。我得到了API call to classroom.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 = Classroom.Courses.CourseWork.create(assignment, 24551294261)
Logger.log(id);
或
Classroom.Courses.CourseWork.patch( {"state": "PUBLISHED"},24551294261,46981225150,{updateMask:'state'});
API call to classroom.courses.courseWork.patch failed with error
与任一程序代码一起返回。如果将Student_COPY更改为view,则代码可以正常工作。我认为这是一个bug,API没有一些手动点击发布所做的发布协议。所以它失败了。我的猜测是创建google文件夹来存储文档。
我教8个班级,手动发布每个作业需要很长时间,如果我犯了错误,学生可能会错过一个作业。
希望有变通的方法或修复错误的方法。我使用API发布,部分是为了节省评分时间,部分是为了保持所有8个班级相同。我可以更新到期日期或说明,而不会意外地遗漏任何人。我需要API来发布分配,这样它就可以访问分配以进行更改。
发布于 2020-02-19 18:06:14
我找到了一种解决方法。您不能使用API发布带有学生副本的作业。你可以在未来使用scheduledTime: 5分钟,系统会为你发布它。
你可以在5分钟内打补丁来打开它,而不是修补状态来发布现有的分配。我有点痛苦,但发布8个班级的3个作业花了我半个小时。5分钟的等待并不是一笔糟糕的交易。我还没有测试过你可以设置的时间与现在有多接近。我使用5分钟来允许任何延迟。
顺便说一下,补丁只适用于标题,描述,状态,dueDate,dueTime,maxPoints,scheduledTime,submissionModificationMode,topicId。材料不在列表中。您不能更改与工作分配关联的链接或文档。
发布于 2020-06-08 02:00:44
因为我没有足够的名誉点,特拉维斯是对的。
UTC祖鲁时间格式:"scheduledTime":"2020-06-08T01:34:55Z",
要打印时间戳,请使用下面的code...make确保在教室函数中调用下面的函数。
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\''));
};
发布于 2020-07-17 03:30:48
如果我要将它安排在未来,那么我会在资源中包含:
resource = {
...
state: "DRAFT";
...
};
要立即发布它,只需将状态设置为已发布:
resource = {
...
state: "PUBLISHED";
...
};
任务就会立即发布。无论哪种方式:
var creq = gapi.client.classroom.courses.courseWork.create({courseId:
smeCourseId,resource: resource});
creq.execute(function(courseWork) {
if (courseWork.error) {
window.alert(courseWork.error.message);
}
);
https://stackoverflow.com/questions/58707261
复制