目标:我想通过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);
};
任何帮助将不胜感激。我被卡住了。
答案 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
};