Как я могу получить Topi c ID, используя Topi c Name в Google Classroom? - PullRequest
0 голосов
/ 17 июня 2020

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

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

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

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

1 Ответ

1 голос
/ 17 июня 2020

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

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

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

Точки модификации:

  • В var topicId = topicNames[j].topicID; вы пытаетесь получить topicID из массива var topicNames = ['Topic1','Topic2'];.
  • Для получения идентификаторов topi c используется метод «course.topics.list».
  • В этой модификации я использовал следующий поток.
    1. Получить список topi c ID.
    2. Создать объект для поиска topi c ID из topi c имя.
    3. Создать курс полученный topi c 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]);
    }
  }
}

Примечание:

  • В этом измененном скрипте предполагается, что API Google Classroom уже включен в расширенных сервисах Google. Ссылка

Ссылка:

...