google-apps-script - 在 Google Classroom API 中发布带有学生副本的类(class)作业时出现内部错误 可能的错误?

标签 google-apps-script publishing google-classroom

当我使用 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/

相关文章:

google-classroom - 如何自定义 Google 类分享按钮的外观

javascript - 如何创建谷歌脚本通过参数从文件夹路径查找文件?

javascript - 如何使用 getByDataFilter Sheets API v4 获取特定行数据

c# - 使用 Word 2007 作为 CMS 页面编辑器

google-play - Google Play应用商店优化技巧

java - Google 类无法访问 Google 云端硬盘

google-apps-script - 如何使用应用程序脚本创建谷歌表单响应

javascript - 如何使用正则表达式从 href 属性获取链接

publishing - Bintray 不会将包的一个工件同步到 jcenter

google-api - 代码 : 403 Message: The caller does not have permission