見出し画像

生徒のつくったスライドをいっこにまとめる

やること

生徒が各自で作ったGoogleスライドを、1つのスライドにまとめます。

まえおき

今年度、江口氏のこの記事を読んで参考にして読書課題を出しているんですね。

まあすごい簡単に言うと、

1 岩波ジュニア新書から1人1冊生徒に選んでもらいます
2 生徒は選んだ本を読みます(途中で変更してもOK)
3 生徒は読んだ本をスライドにまとめます(10枚以内とした)
4 提出します

こういう。

これだけなんですけど、けっこう選書に性格出たり、へえ、あなたこれを選ぶんね、面白いね、みたいになったりして楽しい。

でもみんなざっくりまとめるってことに慣れ過ぎているのか、提出されたものを見てても、スライドがおおざっぱで面白くない。要約の害ってかんじ。

ずっと、とにかく1点突破でやりなさい、ざっくり全体をまとめるとかいらないです、と伝えているのだけど、うまくいかない。

まあ、たぶんどういうふうにすれば「1点突破」になるのかがわからんのだと思う(これはなんでこんなことになっているのかはよくわからんけど、よいことではないです。教育の敗北ってかんじです)。これは指導しないといけない。

ひとつのことをくどく、しつこく書くというのは、個人的には書く指導の最重要事項だと思っているので(というかこれはなんぼ言ってもすぐにできるようにはならないので長い目で見て育てていかなければならないわけですけど)、どうしてもくどくしつこく考えて書くことだけはできるようになってほしい(ぶっちゃけほかのことはわりとどうでもいい)。

で、フィードバック返そうと思うんですけど、個別に返す? ってなったんですね。

せっかくだしみんなが作ったのに、ぼくがコメント入れて全員に返したいじゃないですか。ほかの人の作ったものを見るのもだいじじゃんって。

いちおうテンプレートは作って配っているけど、「なんか色が気に入らん!」とか「もっとかわいくしたい!」みたいなので各々工夫しているから、それも見てほしいなって思う。

いろいろ考えたんですけど、1つのスライドにまとめてしまって、そこにぼくがコメントしてって、それを各自閲覧しなさい、というのがいちばんスマートなんじゃないかと思ったんです。

でも、めんどくさいじゃないですか。あの、いっこいっこスライドコピーするとか。

こういうときこそGASの出番じゃん! っていう話です。

前準備

とりあえず次のことをしておきます。

・生徒の作ったスライドをGoogleDrive上で1つのフォルダにまとめる
・上のフォルダのフォルダIDをメモしておく......(1)
・まとめるためのまっさらなスライドを同じフォルダに作成しておく(名前はなんでもいい)
・上のスライドのIDをメモしておく......(2)

フォルダIDとかスライドIDについてはググってください。すぐ出ます。

コード

たいしたコードではないけど自分用のメモとして書いておきます。

const FOLDER_ID = '(1)のフォルダIDをここにコピぺ';
const TARGET_SLIDE_ID = '(2)のスライドIDをここにコピぺ';
const SLIDE_MIMETYPE_STR = 'application/vnd.google-apps.presentation';

/**
* フォルダ内のスライドをまとめ用のスライドにコピペして統合します。
* スライドの枚数が1枚だったら、たぶんちゃんと完成していないので(というかやっていないので)無視します。
*/
function integrateSlides() {
 //指定のフォルダーにあるファイルを取得
 const targetFolder = DriveApp.getFolderById(FOLDER_ID);
 const filesInFolder = targetFolder.getFiles();

 //集約するスライドファイルをIDで取得する
 const outSlide = SlidesApp.openById(TARGET_SLIDE_ID);

 //フォルダ内のファイルをチェックする
 while(filesInFolder.hasNext()){
   const file = filesInFolder.next();
   console.log(file.getName());
   
   //ファイルの種類をMIMETYPEで判定する。
   //mimetype=>https://developers.google.com/apps-script/reference/base/mime-type
   console.log(file.getMimeType());

   if(file.getMimeType() == SLIDE_MIMETYPE_STR){

     const referenceSlideFileID = file.getId();

     //事前に準備しているファイルでなければ処理を行う
     if(referenceSlideFileID != TARGET_SLIDE_ID){
       const referenceSlides = SlidesApp.openById(referenceSlideFileID).getSlides();

       //スライド数が1である場合には処理をスキップする
       if(referenceSlides.length != 1){
         for(let slide in referenceSlides){
           const outSlides = outSlide.getSlides();

           //まとめ用のスライドにスライドがいっさいない場合もあるのでその場合の処理
           let endSlideIndex = outSlides.length - 1;
           if (endSlideIndex < 0){
             endSlideIndex = 0;
           }

           //スライドに追加
           outSlide.insertSlide(endSlideIndex, referenceSlides[slide]);
         }
       }
     }
   }
 }
}

新しく知ったこと

MimeTypeっての知らんかったです。こうやってファイルの種類を判定できるんですね。

ちなみに

const SLIDE_MIMETYPE_STR = 'application/vnd.google-apps.presentation';

って部分は、

console.log(file.getMimeType());

ってやって取得しました。

ぼくも初心者なんですけど、最初のうちはとにかくconsole.logでいちいち確認しながらやったほうがいいです。VBAならDebug.Printで。

この記事が気に入ったらサポートをしてみませんか?