首页 > 解决方案 > 如何将 OAuth 范围解析为 GSheet 并调用 GClassroom 函数,以便获取分配数据并发布到 GSheet?

问题描述

我不知道 JSON,所以我正在尝试用 GScript 编写代码。我想结合对这个函数的调用,该函数从将数组信息发布到 GSheet 的工作脚本函数中获取课堂信息。

我第一次运行下面的脚本时,我触发了 API 身份验证并获得了我需要的信息,尽管只在 Logger 中。

var email = "my_email@something.org";

function countWork(email) {
  var courseId = "valid_courseId";  
  var data = ""; // String of resulting information from loop below
  var assignments = Classroom.Courses.CourseWork.list(courseId);
  var length = assignments.courseWork.length;
  // Loop to gather info
    for (j = 0; j < length; j++) {
    var assignment = assignments.courseWork[j];        
    var title = assignment.title;
    var created = assignment.creationTime;
    Logger.log('-->Assignment No. %s -->%s -->(%s)',j+1,title,created);  
    }
    return data;
}

但由于某种原因,我无法在此版本的脚本上使用 OAuth 范围,在该版本中,我替换了发布到 GSheet 所需的数组。我收到错误消息“教室未定义(第 7 行...)。” 我需要做什么才能识别 Classroom.Courses.etc?

var email = "my_email@something.org";

function extractAssignmentData(email) {
  var courseId = "valid_courseId"; //
  var data = []; // Array of resulting information from loop below
  var assignments = Classroom.Courses.CourseWork.list(courseId); // error: Classroom is not defined (line 7)
  var length = assignments.courseWork.length;

  // Loop to gather data
    for (j = 0; j < length; j++) {
    var assignment = assignments.courseWork[j];  
    // types of information: description, creationTime, updateTime, dueDate, dueTime, workType 

    var title = assignment.title;
    var created = assignment.creationTime;
    var info = [j+1,title,created];
    data.push(info);   
    }
    return data;
}

标签: google-apps-scriptgoogle-sheetsoauthgoogle-classroomscopes

解决方案


非常感谢,Tanaike,您的有用回复!

根据您的建议,我找到了这篇文章,其中明确描述了如何查阅清单文件,以及如何将范围合并到 appsscript.json 中。

我仍然不确定为什么脚本的第一个版本触发了范围

https://www.googleapis.com/auth/classroom.coursework.students

而第二个添加了这个:

https://www.googleapis.com/auth/classroom.coursework.me.readonly

但是,因为我现在知道如何添加我需要的内容并且可以访问我需要的课堂信息,所以这是一个静音点。再次感谢!(我不确定如何将您的评论标记为我问题的答案——您应该得到分数!)


推荐阅读