Created
April 20, 2021 12:20
-
-
Save Tomokatsu-Sakamoto/0ef21abde3d9a0e9e35a53d9858bd1dd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict' | |
//---------------------------------------------------------------------------- | |
// チェック結果をクリア(列 A~F) | |
function checkClear( ) { | |
SpreadsheetApp.getActiveSheet().getRange( 'A:F' ).clearContent( ); | |
SpreadsheetApp.getActiveSheet().getRange( 'G1' ).clearContent( ); | |
} | |
/******************************************************************************** | |
* クラスの一覧を作成する | |
*/ | |
function ListAllCourses( ) { | |
const sheet = SpreadsheetApp.getActiveSheet( ); // アクティブなシートを取得 | |
var pageToken = null; // 一度に読み込めなかったときにための pageToken | |
var iCount = 0; // クラスの総数 | |
var iStudent = 0; // 登録されている生徒の総数(延べ数) | |
var i; | |
//------------------------------------------------------------ | |
// クラス探索のメインループ | |
do { | |
var optionalArgs = { | |
courseStates: 'ACTIVE', // 探索の対象は現在使われているクラスに限る | |
pageToken: pageToken // 一度に読み込めなかったときは pageToken を指定 | |
}; | |
var response = Classroom.Courses.list( optionalArgs ); | |
var courses = response.courses; | |
Logger.log( "Class : %s", courses.length ); | |
// 今回の一覧の分を個別に、スプレッドシートに書き込む | |
for ( i = 0 ; i < courses.length ; i++ ) { | |
var course = courses[ i ]; | |
// console.log( '%s (%s)', course.name, course.id ); | |
sheet.getRange( 1 + iCount + i, 1 ).setValue( course.id ); // クラスの ID | |
sheet.getRange( 1 + iCount + i, 2 ).setValue( course.name ); // クラスの名称 | |
sheet.getRange( 1 + iCount + i, 3 ).setValue( course.courseState ); | |
} | |
iCount += courses.length; | |
Logger.log( "Class SUM : %s", iCount ); | |
pageToken = response.nextPageToken; // 前回の続きから読み込むように、pageToken を設定 | |
} while ( pageToken != null ); // pageToken が null なら、次はない | |
sheet.getRange( 1 + iCount + 1, 2 ).setValue( iCount ); | |
} | |
/******************************************************************************** | |
* クラスに所属する生徒の数を数える(親関数) | |
*/ | |
function CourseStudents( ) { | |
const sheet = SpreadsheetApp.getActiveSheet( ); // アクティブなシートを取得 | |
var iCount = 0; // クラスの総数 | |
var iStudent = 0; // 登録されている生徒の総数(延べ数) | |
var courseId; // クラスの ID | |
var i = 0; | |
i = sheet.getRange( 'G1' ).getValue( ); | |
do { | |
// A列に設定されているクラスの ID に対して処理する | |
i++; | |
courseId = sheet.getRange( i, 1 ).getValue( ); | |
if ( courseId > 0 ) { | |
var courses = Classroom.Courses.get( courseId ); | |
sheet.getRange( i, 4 ).setValue( Classroom.UserProfiles.get(courses.ownerId).emailAddress ); | |
sheet.getRange( i, 5 ).setValue( courses.enrollmentCode ); | |
iCount = countCourseStudents( courseId ); | |
sheet.getRange( i, 6 ).setValue( iCount ); | |
} | |
Logger.log( i + " : " + courseId + " - " + iCount ); | |
} while ( courseId > 0 ); | |
} | |
/******************************************************************************** | |
* クラスに所属する生徒の数を数える | |
*/ | |
function countCourseStudents( courseId ) { | |
var pageToken = null; // 一度に読み込めなかったときにための pageToken | |
var iTotal = 0; // 登録されている生徒の数 | |
var i; | |
var j; | |
//------------------------------------------------------------ | |
// 生徒探索のメインループ | |
do { | |
var optionalArgs = { | |
pageToken: pageToken // 一度に読み込めなかったときは pageToken を指定 | |
}; | |
var response = Classroom.Courses.Students.list( courseId, optionalArgs ); | |
if ( response.students ) { | |
// | |
iTotal += response.students.length; | |
Logger.log( "Student SUM : %s", iTotal ); | |
pageToken = response.nextPageToken; | |
} | |
else { | |
// | |
pageToken = null; | |
} | |
} while ( pageToken != null ); | |
return iTotal; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment