Как получить идентификатор курса из URL-адреса Класса?

Цель: я хочу быстро подключиться к Google Classroom, используя URL-адрес Google Classroom через Google Apps Script.

Проблема: нужна помощь в фильтрации карты курсов по URL.

Предыстория: в Classroom API мало документации по GAS. Более того, COURSE_ID используется почти для всех соединений. Я могу нанести на карту активные курсы, но не могу фильтровать карту. Код ниже взят из Yagisanatode с изменениями в попытке сопоставить активные курсы по URL. Изменение регистратора на (courseData) показывает создание массива double.

function findCourseByUrl() {
const courseList = Classroom.Courses.list({"courseStates":["ACTIVE"]}).courses;


const courseData = courseList.map(course => {

    let ownerName = Classroom
                .Courses
                .Teachers
                .get(course.id, course.ownerId)
                .profile
                .name
                .fullName;


    return `[${course.name}, ${course.id}, ${ownerName}, ${course.alternateLink}]`;

});

const link = 'https://classroom.google.com/c/YOUCLASSROOMURL'; //change this
const data = courseData.filter(function(item){return item[4] === link;});
Logger.log(data);
};

Любая помощь будет оценена по достоинству. Я застрял.


person Antony    schedule 10.06.2020    source источник


Ответы (1)


Ответ:
ссылка не определена, так как находится за пределами courseData.filter (function (item) {}). Решение состоит в том, чтобы вызвать глобальную переменную или создать условное выражение с объявленной переменной внутри функции (элемента).

ToString ищет точное совпадение текста URL-адреса, который, естественно, уникален. Ссылка на видео: https://youtu.be/PT_TDhMhWsE

Код:

function findCourseByUrl() {
    const courseList = Classroom.Courses.list({"courseStates":["ACTIVE"]}).courses;
    
    
    const courseData = courseList.map(course => {
    
        let ownerName = Classroom
                    .Courses
                    .Teachers
                    .get(course.id, course.ownerId)
                    .profile
                    .name
                    .fullName;
              
 
        return `[${course.name}, ${course.id}, ${ownerName}, ${course.alternateLink}]`;
    
    });
    
    const filterCourse = function(item){
    let link = 'https://classroom.google.com/c/YOURCOURSEURL'  ///Change this or replace with a global variable
    if(item.toString().indexOf(link) === -1){
    return false;
    } else {
    return true
    }
    };

    
   let theCourse = courseData.filter(filterCourse);  //this could be a return if called by function in Test.gs
   
   Logger.log(theCourse); //remove if using a function with console.log in Test.gs

};

person Antony    schedule 10.06.2020