Google Classroom APIについては、GASのサンプルはネットによく出回っているのですが、Pythonでの記述方法がよくわからなかったので、メモ書きです。GASの場合と異なるのは、SCOPEの宣言をしないといけないのと、credentialsファイルの読み込みも必要になってくる点ですね。スコープを変更する際には、credentialsファイルも作り直す必要があるので要注意です。
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
SCOPES = ['https://www.googleapis.com/auth/classroom.courses.readonly' | |
,'https://www.googleapis.com/auth/classroom.rosters' | |
,'https://www.googleapis.com/auth/classroom.rosters.readonly' | |
,"https://www.googleapis.com/auth/classroom.profile.emails", | |
"https://www.googleapis.com/auth/classroom.profile.photos"] | |
def getGcStudentList(): | |
creds = None | |
if os.path.exists('token.json'): | |
creds = Credentials.from_authorized_user_file('token.json', SCOPES) | |
if not creds or not creds.valid: | |
if creds and creds.expired and creds.refresh_token: | |
creds.refresh(Request()) | |
else: | |
flow = InstalledAppFlow.from_client_secrets_file( | |
'credentials.json', SCOPES) | |
creds = flow.run_local_server(port=0) | |
with open('token.json', 'w') as token: | |
token.write(creds.to_json()) | |
try: | |
pagetoken ="" | |
service = build('classroom', 'v1', credentials=creds) | |
pageToken=None | |
while True: | |
params = {} | |
params["courseId"] = 00000000 #ここにコースのIDを書く | |
params["pageSize"] = 50 | |
if pageToken: | |
params["pageToken"] = pageToken | |
studentList = service.courses().students().list(**params).execute() | |
for student in studentList['students']: | |
print(student['profile']['emailAddress']) | |
pageToken = studentList.get('nextPageToken') | |
if not pageToken: | |
break | |
except HttpError as error: | |
print('An error occurred: %s' % error) |
0 件のコメント:
コメントを投稿