Google apps script 在google教室API中发布带有学生副本的课程作业时出现内部错误可能存在错误?

Google apps script 在google教室API中发布带有学生副本的课程作业时出现内部错误可能存在错误?,google-apps-script,publishing,google-classroom,Google Apps Script,Publishing,Google Classroom,当我使用课堂API发布带有学生副本的作业时。我得到对教室.courses.courseWork的API调用,但失败,出现错误:遇到内部错误 当我成功发布草稿,然后尝试使用API发布作业,或者当我尝试直接发布新作业时,就会发生这种情况 将作业更改为“仅查看”可以解决这两种情况下的发布问题,但您无法获得学生副本,并且在发布后无法将其更改回,并且几乎总是需要学生副本 发布草稿后,我可以在谷歌课堂上手动发布,没有任何问题。我认为这与你在发布作业后无法制作学生副本的原因有关 我在发布之前已经探测过,学生文

当我使用课堂API发布带有学生副本的作业时。我得到对教室.courses.courseWork的
API调用,但失败,出现错误:遇到内部错误

当我成功发布草稿,然后尝试使用API发布作业,或者当我尝试直接发布新作业时,就会发生这种情况

将作业更改为“仅查看”可以解决这两种情况下的发布问题,但您无法获得学生副本,并且在发布后无法将其更改回,并且几乎总是需要学生副本

发布草稿后,我可以在谷歌课堂上手动发布,没有任何问题。我认为这与你在发布作业后无法制作学生副本的原因有关

我在发布之前已经探测过,学生文件夹id可用,但尚未创建

var赋值={
标题:“测试文件”,
材料:[
{
驱动文件:{
驱动文件:{
id:“11klBA-80IQPAJHRPSYJHQVSK7BUWWATLFDWG0UJGFO”,
标题:“样本文件”
},
共享模式:“学生副本”
}
}
],
声明:“发布”,
工作类型:“分配”
};
var id=教室。课程。课程作业。创建(作业,24551294261)
Logger.log(id);

classher.Courses.CourseWork.patch({“state”:“PUBLISHED”},2455129426146981225150,{updateMask:'state'});
API调用教室.courses.courseWork.patch失败,出现错误
返回程序代码。如果将Student_COPY更改为view,则代码可以正常工作。我相信这是一个bug,API没有手动点击publish的发布协议。所以它失败了。我猜应该是创建google文件夹来存储文档

我教8门课,手工发布每个作业需要很长时间,如果我出错,学生可能会错过一个作业


希望有一个解决方法或bug修复。我使用API发布部分内容是为了节省评分时间,部分内容是为了保持所有8个类相同。我可以更新到期日或说明,而不会意外遗漏任何人。我需要API发布作业,以便它可以访问作业进行更改。

我找到了一个解决方法。您不能使用API发布带有学生副本的作业。 您可以在将来使用scheduledTime:5分钟,系统将为您发布它

与其修补状态以发布现有作业,还不如修补计划在5分钟内将其打开。我有点痛苦,但发布8节课的3个作业需要我半小时。5分钟的等待是一个不错的交易。我还没有测试过你能设定的时间离现在有多近。我用5分钟来考虑任何滞后


顺便说一下,补丁只对标题、描述、状态、dueDate、dueTime、maxPoints、scheduledTime、submissionModificationMode和topicId有效。材料不在清单上。您不能更改与作业关联的链接或文档。

因为我没有足够的信誉点数,Travis是正确的

UTC祖鲁时间采用以下格式: “计划时间”:“2020-06-08T01:34:55Z”

要打印时间戳,请使用以下代码…确保在课堂函数中调用以下函数

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\''));
};

如果我打算为将来安排,那么我在资源中包括:

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);
    }
);