如何在 Google 课堂中使用主题名称获取主题 ID?
How can I get a Topic ID using Topic Name in Google Classroom?
我正在使用 Google Apps 脚本在几个 Google 教室中的每个教室中之前创建的几个主题下创建作业。我知道主题名称,但不知道 ID - 有没有一种方法可以使用名称创建作业以获取 ID?
这是我正在尝试的(但 topicID 最终为 null 而不是实际 ID):
function addAssignments() {
var courseIds = ['100000000000','100000000001'];
var topicNames = ['Topic1','Topic2'];
for (var i = 0; i < courseIds.length; i++) {
for (var j = 0; j < topicNames.length; j++) {
var topicId = topicNames[j].topicID;
var exec = Classroom.Courses.CourseWork.create({
title: "My Assignment",
topicId: topicId,
workType: "ASSIGNMENT",
}, courseIds[i]);
}
}
}
查看 (But this is making a new Topic in the process of making the Assignment - my Topics are already made), and Is there an example of the Classroom.Courses.Topics.get so I can call Classroom.Courses.CourseWork.create with an existing topicId? (But, when I tried courses.topics.get(),我想不出一种快速的方法来从响应中获取我需要的 ID - 问题也可能是我的迭代或其他问题,所以我将其包含在我的代码示例)。
我相信你的目标如下。
- 您想从主题名称中检索主题 ID,并使用 Google Apps 脚本使用检索到的主题 ID 创建课程。
为此,这个答案怎么样?
修改点:
- 在
var topicId = topicNames[j].topicID;
,您尝试从 var topicNames = ['Topic1','Topic2'];
的数组中检索 topicID
。
- 为了检索主题ID,使用了"courses.topics.list"的方法。
- 在这次修改中,我使用了以下流程。
- 检索主题 ID 列表。
- 创建用于从主题名称搜索主题 ID 的对象。
- 使用检索到的主题 ID 创建课程作业。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
function addAssignments() {
var courseIds = ['100000000000','100000000001'];
var topicNames = ['Topic1','Topic2'];
for (var i = 0; i < courseIds.length; i++) {
var topics = Classroom.Courses.Topics.list(courseIds[i]).topic; // Added
var topicObj = topics.reduce((o, e) => Object.assign(o, {[e.name]: e.topicId}), {}); // Added
for (var j = 0; j < topicNames.length; j++) {
var topicId = topicObj[topicNames[j]]; // Added
var exec = Classroom.Courses.CourseWork.create({
title: "My Assignment",
topicId: topicId,
workType: "ASSIGNMENT",
}, courseIds[i]);
}
}
}
注:
- 在此修改后的脚本中,它假设 Google 教室 API 已经在高级 Google 服务中启用。 Ref
参考:
我正在使用 Google Apps 脚本在几个 Google 教室中的每个教室中之前创建的几个主题下创建作业。我知道主题名称,但不知道 ID - 有没有一种方法可以使用名称创建作业以获取 ID?
这是我正在尝试的(但 topicID 最终为 null 而不是实际 ID):
function addAssignments() {
var courseIds = ['100000000000','100000000001'];
var topicNames = ['Topic1','Topic2'];
for (var i = 0; i < courseIds.length; i++) {
for (var j = 0; j < topicNames.length; j++) {
var topicId = topicNames[j].topicID;
var exec = Classroom.Courses.CourseWork.create({
title: "My Assignment",
topicId: topicId,
workType: "ASSIGNMENT",
}, courseIds[i]);
}
}
}
查看
我相信你的目标如下。
- 您想从主题名称中检索主题 ID,并使用 Google Apps 脚本使用检索到的主题 ID 创建课程。
为此,这个答案怎么样?
修改点:
- 在
var topicId = topicNames[j].topicID;
,您尝试从var topicNames = ['Topic1','Topic2'];
的数组中检索topicID
。 - 为了检索主题ID,使用了"courses.topics.list"的方法。
- 在这次修改中,我使用了以下流程。
- 检索主题 ID 列表。
- 创建用于从主题名称搜索主题 ID 的对象。
- 使用检索到的主题 ID 创建课程作业。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
function addAssignments() {
var courseIds = ['100000000000','100000000001'];
var topicNames = ['Topic1','Topic2'];
for (var i = 0; i < courseIds.length; i++) {
var topics = Classroom.Courses.Topics.list(courseIds[i]).topic; // Added
var topicObj = topics.reduce((o, e) => Object.assign(o, {[e.name]: e.topicId}), {}); // Added
for (var j = 0; j < topicNames.length; j++) {
var topicId = topicObj[topicNames[j]]; // Added
var exec = Classroom.Courses.CourseWork.create({
title: "My Assignment",
topicId: topicId,
workType: "ASSIGNMENT",
}, courseIds[i]);
}
}
}
注:
- 在此修改后的脚本中,它假设 Google 教室 API 已经在高级 Google 服务中启用。 Ref