如何从课堂URL获取课程ID?

时间:2020-06-10 14:56:36

标签: google-apps-script google-api map-function google-classroom

目标:我想通过Google Apps脚本使用Google课堂URL快速连接到Google课堂。

问题:需要帮助,才能通过URL过滤课程地图。

背景: 课堂API几乎没有关于GAS的文档。此外,COURSE_ID几乎用于所有连接。我可以绘制当前课程的地图,但不能筛选地图。以下代码源自Yagisanatode,并进行了一些修改,以尝试通过URL映射有效课程。将Logger更改为(courseData)可以显示双精度数组的创建。

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

任何帮助将不胜感激。我被卡住了。

1 个答案:

答案 0 :(得分:0)

答案:
链接未定义,因为它在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

};