我是以编程方式提交Google课堂作业,使用STUDENT_COPY shareMode附加材料时的行为与使用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中创建作业。但是,我 am 看到我在Google云端硬盘中放入的driveFile.id中指定的Google文档的[模板]副本。
我已经尝试了几个不同的文档,其中一些基本上是“Hello World”级别的Google文档,所以我怀疑这个问题与文档有关。
除此之外,我不确定会发生什么。我假设某处必须存在某种权限问题,但其他人是否知道可能会发生什么?
编辑:更多信息
这似乎是“发布”作业的问题。如果我将resource.state
设置为DRAFT
,我就能够成功执行coursework.create
API调用。我按预期返回了一个CourseWork对象的实例。
问题是我需要最终发布作业。当我尝试执行classroom.courses.courseWork.patch()
api调用以简单地将状态从DRAFT更改为PUBLISHED时,我最终得到相同的Requested entity was not found
错误。
但是,我可以进入Google Classroom,查看我的草稿,然后单击应用程序中的ASSIGN按钮。如果我这样做,一切都终于有效了!但是UI流程对我来说并不好。但它确实表明,就我所知,任务本身没有任何错误。我似乎错过了一些(无证件的)步骤,这在我的案例中是必要的。
答案 0 :(得分:0)
这是因为实体尚不存在,因为学生还没有在课堂上访问指派。因此,请确保他们这样做并重试。
与共享模式为的材料对应的驱动器文件 如果学生没有访问过,则STUDENT_COPY可能尚不存在 课堂作业。