google-classroom - 使用 STUDENT_COPY Material 创建作业时在 Google 类中找不到实体错误

标签 google-classroom

我正在以编程方式提交 Google 类作业,当我使用 STUDENT_COPY shareMode 附加 Material 时,我看到了与使用 VIEW shareMode 时不同的行为。

下面的代码似乎工作正常:

var resource = {
    title: name,
    description: explanation,
    workType: 'ASSIGNMENT',
    state: 'PUBLISHED'
};

resource.materials = [];
resource.materials.push({
    driveFile: {
        driveFile: {
            id: 'fileId'
        },
        shareMode: 'VIEW'
    }
});     
var params = {auth: creds, courseId: courseId, resource: resource};
classroom.courses.courseWork.create(params, function (err, courseWorkResponse) {
  /* handle response */
}

使用该代码,作业已创建,我可以在 Google 类中看到它。但是,如果我将 shareMode 设置为 STUDENT_COPY 而不是 VIEW,则会出现以下错误:

{ Error: Requested entity was not found.
    at Request._callback (/Users/.../node_modules/googleapis/node_modules/google-auth-library/lib/transporters.js:85:15)
    at Request.self.callback (/Users/.../node_modules/googleapis/node_modules/request/request.js:188:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (/Users.../node_modules/googleapis/node_modules/request/request.js:1171:10)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at IncomingMessage.<anonymous> (/Users/.../node_modules/googleapis/node_modules/request/request.js:1091:12)
    at IncomingMessage.g (events.js:292:16)
    at emitNone (events.js:91:20)
  code: 404,
  errors:
   [ { message: 'Requested entity was not found.',
       domain: 'global',
       reason: 'notFound' } ] }

作业不是在 Google Classrom 中创建的。但是,我看到我在 driveFile.id 中指定的 Google 文档的 [Template] 副本被放置到我的 Google 云端硬盘中。

我已经用几个不同的文档尝试过这个,其中一些基本上是“Hello World”级别的谷歌文档,所以我怀疑这个问题与文档有关。

除此之外,我不确定会发生什么。我假设某处一定存在某种权限问题,但其他人是否知道可能发生了什么?

编辑:更多信息

这似乎是“发布”作业的问题。如果我将 resource.state 设置为 DRAFT,我就能成功执行 coursework.create API 调用。我按预期取回了 CourseWork 对象的实例。

问题是我需要最终发布作业。当我尝试执行 classroom.courses.courseWork.patch() api 调用以简单地将状态从 DRAFT 更改为 PUBLISHED 时,我最终得到相同的 Requested entity was not found 错误。

不过,我可以进入 Google 类本身,查看我的草稿,然后点击应用程序中的分配按钮。如果我这样做,一切终于奏效了!不过,该 UI 流程对我不利。但它确实表明,据我所知,这项作业本身并没有错。我似乎只是缺少一些(未记录?)对我而言必要的步骤。

最佳答案

发生这种情况是因为实体尚不存在,因为学生尚未在类里面访问作业。因此,请确保他们这样做并重试。

Reference :

Drive files that correspond to materials with a share mode of STUDENT_COPY may not exist yet if the student has not accessed the assignment in Classroom.

关于google-classroom - 使用 STUDENT_COPY Material 创建作业时在 Google 类中找不到实体错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45450153/

相关文章:

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

javascript - 确定 Google Class Room 中的用户类型(教师或学生)

google-apps-script - 在 Google 表格模板的容器绑定(bind)脚本中维护启用的 API

google-api - 谷歌教室域帐户的邀请配额限制是多少?

iOS |如何以编程方式打开谷歌类应用程序

java - 为什么我无法使用 Google Classroom API?

google-classroom - Google Classroom API 返回没有电子邮件地址的学生个人资料 JSON

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