Как я могу получить идентификатор темы, используя название темы в Google Classroom?

Я использую скрипт Google Apps для создания задания в нескольких классах Google по нескольким ранее созданным темам в каждом классе. Я знаю названия тем, но не идентификаторы. Есть ли способ, которым я могу создавать назначения, используя имена для получения идентификаторов?

Вот что я пытаюсь (но topicID оказывается равным нулю вместо фактического идентификатора):

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]);
      }
    }
  }

Посмотрел Добавление идентификатора темы в задание Google Classroom (Но это создает новую тему в процессе выполнения задания - мои темы уже созданы) и Есть ли пример Classroom.Courses.Topics.get, чтобы я мог вызвать Classroom.Courses.CourseWork. создать с существующим topicId? (Но когда я попробовал course.topics.get (), я не мог найти быстрый способ получить только нужный мне идентификатор из ответа. Проблема также могла быть в моей итерации или в чем-то еще, поэтому я включил это в моем примере кода).


person moe    schedule 17.06.2020    source источник
comment
Добро пожаловать в Stack Overflow. Добавьте краткое описание ваших усилий по поиску / исследованию, как это предлагается в Как задать вопрос.   -  person Rubén    schedule 17.06.2020
comment
@ Rubén Добавлен - спасибо   -  person moe    schedule 17.06.2020


Ответы (1)


Я считаю вашей целью следующее.

  • Вы хотите получить идентификатор темы из названия темы и создать курс, используя полученный идентификатор темы с помощью скрипта Google Apps.

Для этого как насчет этого ответа?

Пункты модификации:

  • В var topicId = topicNames[j].topicID; вы пытаетесь получить topicID из массива var topicNames = ['Topic1','Topic2'];.
  • Для получения идентификаторов тем используется метод «course.topics.list».
  • In this modification, I used the following flow.
    1. Retrieve the topic ID list.
    2. Создайте объект для поиска идентификатора темы по названию темы.
    3. Создайте 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. Ссылка

Ссылка:

person Tanaike    schedule 17.06.2020