gclassroom-exporter
ログインしたアカウントで見られるGoogleClassroomのほぼ全てのデータをダウンロードするスクリプトです。
200250320350400行しかないので読んでから自己責任で実行してください!!!!
あと、私は書いていません。ChatGPTに指示しただけです。最高。(v1.4くらいからChatGPTの手に負えなくなってきちゃった。コンテキスト長が足りない……)
使い方
使用に当たって、Google Classroom APIとGoogle Drive APIを 有効にし、OAuth認証用にcredentialsをダウンロードしておく必要があります。
- https://15km.jp/scripts/gclassroom-exporter/releases/gclassroom-exporter_v2.2.zipをダウンロード・解凍し、一通り読んでください。
- https://console.cloud.google.com/にアクセスし、GoogleClassroomAPIとGoogleDriveAPIを有効にしてください。(もしかしたら新しくプロジェクトを作る必要があるかも知れません)
- コンソールのナビゲーションメニューなどから「APIとサービス」→「OAuth同意画面」に行ってSCOPESにあるものを許可しつつ適当に作って下さい。
- 出来たら「OAuthクライアントをダウンロード」というのがあるのでダウンロードし、main.py:15のCREDENTIALS_FILEパスを指定するか、./secret/以下にcredentials.jsonを置いて下さい。
- pyproject.tomlを同梱しているので、好みの環境・パッケージ管理ソフトでパッケージを入れて下さい。
- して、main.pyを実行したらdownloadsに適当に保存されます。
(デフォルトでは取得できるすべてのクラスが保存されます。特定のクラス(コース)のみを保存したい場合はselect-classesをつけて実行してください。) - やったね。
※提出したファイルや提出ボックスに元々入っていたデータはダウンロードしません。GoogleDriveにリンクで共有されているはずなので、そちらからダウンロードするようにして下さい。(G:マイドライブ/Classroomなんかに元からまとまっているはず。)
オプション・サブコマンド
- select-classes : クラスを選択してダウンロード
- –diff-only : 存在しないファイルのみをダウンロードする
- –max-filesize : ダウンロードするファイルのサイズ上限を設ける
- –save-jsonfiles : apiで得られるコースや課題、投稿などの情報とリストを取得したままjsonファイルに保存する
- –quiet : INFOログを流さない
既知の問題や把握している苦情など
- 返却されていないファイルは今のところ保存できません。
- 閲覧のみ可なファイルがダウンロードできません。ひとつ下のプロジェクトの実装を進めれば保存できるようになりますがあまり自分に必要でなくて実装が進んでいません。
- GoogleCloudへのアクセス権限がある組織って少ないのでは。
- Playwrightでスクレイピングするものを途中まで書きましたが、私自身に需要がないため、途中で放棄されています。
- コメントなどは現状保存されません。
- 認証にそれなりに時間がかかるのに何のコメントもない
- 実行中に流しているlogを綺麗にしたい。
- logging使うようにはしたけれどよく分かっていない…
- 特定のクラス、期間等を指定してダウンロードできるようにしたい。
- 一度ダウンロードしたものと比較し、ハッシュを確認するなどしたい。
- –diff-onlyでパスに存在するかどうか調べるようにしたので、そこの分岐に追加でできそう。
- 実装したいサブコマンド・オプション
- –exclude-types : 特定形式のファイルを除外する
- –specific-types : 特定形式のファイルのみをダウンロードする
- 一度ダウンロードしたものと比較し、ハッシュを確認するなどしたい。
ライセンス
GPLv3です。https://15km.jp/scripts/gclassroom-exporter/LICENSE.txt
一応。
Releases
- 2.2(2025/04/21)
- pyproject.tomlの追加。
開発にuvを使っているので、uv.lockも追加している(ちなみに初期はRyeだった) - –save-jsonfilesオプションの追加
- https://15km.jp/scripts/gclassroom-exporter/releases/gclassroom-exporter_v2.2.zip
- pyproject.tomlの追加。
- 2.1(2024/10/23)
- –diff-onlyオプションを実装した。
- https://15km.jp/scripts/gclassroom-exporter/releases/gclassroom-exporter_v2.1.zip
- 2.0(2024/10/22)
- アナウンスは一つのフォルダーに、課題と資料はtopicごとに保存するように変更
- https://15km.jp/scripts/gclassroom-exporter/releases/gclassroom-exporter_v2.0.zip
- 1.3(2024/10/09)
- サブコマンドselect-classes、オプション–quiet, –max-filesizeの追加を行った。
- https://15km.jp/scripts/gclassroom-exporter/releases/gclassroom-exporter_v1.3.zip
- 1.2(2024/10/06)
- 要望によりダウンロードの際にファイルサイズの制限を設けた。
- https://15km.jp/scripts/gclassroom-exporter/releases/gclassroom-exporter_v1.2.zip
- 1.1(2024/10/06)
- loggingを使うようにした。エラー処理の追加。
- https://15km.jp/scripts/gclassroom-exporter/releases/gclassroom-exporter_v1.1.zip
- 1.0(2024/09/14)
その他
なにかあればメールrc-2166-m@15km.jpもしくはSNSの個チャ/DMまで。
2024/09/14 rc-2166-m@15km.jp