【问题标题】:How can I get a Topic ID using Topic Name in Google Classroom?如何在 Google 课堂中使用主题名称获取主题 ID?
【发布时间】:2020-10-06 17:40:51
【问题描述】:

我正在使用 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]);
      }
    }
  }

看了Adding a Topic ID to a Google Classroom assignment(但这是在做作业的过程中做一个新的话题——我的话题已经做好了)和Is there an example of the Classroom.Courses.Topics.get so I can call Classroom.Courses.CourseWork.create with an existing topicId?(但是,当我尝试courses.topics.get()时,我想不通一种从响应中获取我需要的 ID 的快速方法 - 问题也可能是我的迭代或其他问题,因此我已将其包含在我的代码示例中。

【问题讨论】:

  • 欢迎来到Stack Overflow。请按照How to Ask 中的建议添加您的搜索/研究工作的简要说明。
  • @Rubén 已添加 - 谢谢

标签: google-apps-script google-classroom


【解决方案1】:

我相信你的目标如下。

  • 您想从主题名称中检索主题 ID,并使用 Google Apps 脚本使用检索到的主题 ID 创建课程。

对于这个,这个答案怎么样?

修改点:

  • var topicId = topicNames[j].topicID;,您尝试从var topicNames = ['Topic1','Topic2']; 的数组中检索topicID
  • 为了获取主题ID,使用了“courses.topics.list”的方法。
  • 在此修改中,我使用了以下流程。
    1. 检索主题 ID 列表。
    2. 创建一个对象,用于从主题名称中搜索主题 ID。
    3. 使用检索到的主题 ID 创建 courseWork。

当以上几点反映到你的脚本中时,它变成如下。

修改脚本:

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 Classroom API 已经在 Google 高级服务中启用。 Ref

参考:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多