Google apps script 如何在Google教室中使用主题名称获取主题ID?

Google apps script 如何在Google教室中使用主题名称获取主题ID?,google-apps-script,google-classroom,Google Apps Script,Google Classroom,我正在使用谷歌应用程序脚本在几个谷歌教室中创建一个作业,在每个教室中的几个先前创建的主题下。我知道主题名称,但不知道ID-有没有办法使用名称来创建作业以获得ID 以下是我正在尝试的(但topicID最终为null,而不是实际的ID): 函数addAssignments(){ var courseIds=['10000000000','100000000001']; 变量topicNames=['Topic1','Topic2']; 对于(变量i=0;i

我正在使用谷歌应用程序脚本在几个谷歌教室中创建一个作业,在每个教室中的几个先前创建的主题下。我知道主题名称,但不知道ID-有没有办法使用名称来创建作业以获得ID

以下是我正在尝试的(但topicID最终为null,而不是实际的ID):

函数addAssignments(){
var courseIds=['10000000000','100000000001'];
变量topicNames=['Topic1','Topic2'];
对于(变量i=0;i

查看(但这是在做作业的过程中创建一个新主题-我的主题已经创建好了),和(但是,当我尝试时,我无法找到一种快速的方法从响应中获取我需要的ID-问题也可能是我的迭代或其他问题,所以我在代码示例中包含了这一点)我相信你的目标如下

  • 您希望从主题名称中检索主题ID,并使用Google Apps脚本使用检索到的主题ID创建课程作业
对于这个问题,这个答案如何

修改点:
  • At
    var-topicId=topicNames[j].topicId
    ,您尝试从
    var-topicNames=['Topic1','Topic2']的数组中检索
    topicID
  • 为了检索主题ID,使用了“courses.topics.list”方法
  • 在这次修改中,我使用了以下流程。
  • 检索主题ID列表
  • 创建用于从主题名称搜索主题ID的对象
  • 使用检索到的主题ID创建课程作业
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
函数addAssignments(){
var courseIds=['10000000000','100000000001'];
变量topicNames=['Topic1','Topic2'];
对于(变量i=0;iObject.assign(o,{[e.name]:e.topicId}),{});//添加
对于(var j=0;j
注:
  • 在这个修改后的脚本中,它假设Google教室API已经在高级Google服务中启用
参考:

欢迎光临。请按照中的建议添加对您的搜索/研究工作的简要描述。@Ruben补充道-谢谢
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]);
      }
    }
  }
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]);
    }
  }
}