見出し画像

GAS×Classroom③授業資料の投稿(閲覧権限のみ付与)|イチからDX

前回の記事はこちら

𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧


今回やりたい事

前回までで新しいクラスをつくり、そのクラスのID等を取得するところまで完了しましたので、今回は授業資料の投稿に挑戦しました。

手動で投稿する場合、このように作成ボタンから資料を選び、必要事項を入力してファイルを添付する流れとなります。


授業資料の投稿

共有イメージ

今回はクラスのDriveフォルダとは別のフォルダに共有したい資料(ここでは動画ファイル)が格納されている状態です。生徒の方が動画ファイルを閲覧のみ可能な状態でファイルを添付していきます。

ちなみに、Drive側の共有設定で二つ目のチェックボックス(閲覧者にダウンロード、印刷、コピーの項目を表示する)のチェックを外す事で、意図しないファイルの拡散等を防ぐことも可能です。

ブラウザでDriveフォルダを開き、ファイルの上で右クリック→「共有」をクリック→
右上にある歯車マークをクリックで図の画面が表示されます。

今回追加したコード

「資料」として投稿されず「課題」として投稿されてしまいますが、採点等の機能は付けていませんのでファイルを生徒に共有するという目的は達成できました…🐰💦

※前回までのコードは省略しています

//資料配布(閲覧のみ)
  //投稿内容設定
  const sample_movie = {
    //投稿タイトル
    title: 'サンプル動画',
    //説明文
    description: '動画を再生し、問題なく閲覧できることを確認してください。',
    //公開・未公開等の指定(参照ページ https://developers.google.com/classroom/reference/rest/v1/courses.courseWork#CourseWorkState)
    state: 'PUBLISHED',
    //投稿の種類(参照ページ https://developers.google.com/classroom/reference/rest/v1/CourseWorkType)
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        //添付ファイルのID
        "driveFile": {"id": "共有したいファイルのIDに差し替えてください"},  //添付ファイルのID
        //共有方法(参照ページ https://developers.google.com/classroom/reference/rest/v1/Material#ShareMode)
        "shareMode": 'VIEW'
        }
      }]
  };
  //クラスに投稿
  Classroom.Courses.CourseWork.create(sample_movie, newroomID);

補足説明

今回のコードはこちらの記事をとても参考にさせて頂きました🙇‍♀️

実際に投稿されたものと見比べた方が分かりやすいかもしれませんので、先にこちらをお見せしますね。

「資料」として投稿できるとタイトル左のアイコンが違うものになるのですが…
取り敢えずは目的達成ということでご容赦ください😅

投稿タイトル、説明文は「'」で囲んでください(半角です)。

    //投稿タイトル
    title: 'サンプル動画',
    //説明文
    description: '動画を再生し、問題なく閲覧できることを確認してください。',

投稿物のステータスを指定します。詳細はこちらを確認ください。

    //公開・未公開等の指定(参照ページ https://developers.google.com/classroom/reference/rest/v1/courses.courseWork#CourseWorkState)
    state: 'PUBLISHED',

続いて課題の種類です。記述問題や選択問題を選ぶこともできるようです。詳細はこちらを確認ください。

    //投稿の種類(参照ページ https://developers.google.com/classroom/reference/rest/v1/CourseWorkType)
    workType: 'ASSIGNMENT',

添付するファイルのIDの取得方法ですが、ブラウザでGoogleDriveを開き、ファイルの上で右クリック→リンクを取得→リンクをコピーします。
貼り付けてID前後の不要な部分は削除すればOKです。
(https://drive.google.com/file/d/ここがIDです/view?usp=sharing)

なお、ファイルのIDは「"」で囲んでください。
生徒に付与する権限を変更したい場合はこちらを参考に修正してください。
(VIEWでは生徒は閲覧のみ可能な状態で共有されます)

    materials: [{
      "driveFile": {
        //添付ファイルのID
        "driveFile": {"id": "共有したいファイルのIDに差し替えてください"},  //添付ファイルのID
        //共有方法(参照ページ https://developers.google.com/classroom/reference/rest/v1/Material#ShareMode)
        "shareMode": 'VIEW'
        }
      }]

クラスのIDは前回の記事で取得したものを使用しています。

  //クラスに投稿
  Classroom.Courses.CourseWork.create(sample_movie, newroomID);


現在までのコード全体像

前回までのコードに今回ご紹介したコードを追加しました。

function workshop() {

//スプレッドシートから情報取得
  //開いているスプレッドシート取得
  const spreadsheet = SpreadsheetApp.getActive();
  
  //該当シート指定
  const sheet = spreadsheet.getSheetByName('入力シート'); //シート名

  //会社名を取得
  const company = sheet.getRange('B1').getValue(); //セル番地
  Logger.log(company);

  //プログラム名取得
  const program = sheet.getRange('B2').getValue(); //セル番地
  Logger.log(program);  

  //クラスの説明取得
  const memo = sheet.getRange('B3').getValue(); //セル番地
  Logger.log(memo);  

  //教師1のメールアドレス
  const teacher = sheet.getRange('B5').getValue(); //セル番地
  Logger.log(teacher);  

//クラス作成
  //クラスルーム生成に必要な各要素の指定
  const course = Classroom.newCourse();

    course.name = program; //部屋の名前(必須項目)
    course.ownerId = teacher; //オーナー(必須項目)
    course.section = company; //セクション
    course.description = memo; //クラスの説明
    course.courseState = 'ACTIVE'; //コースの状態指定
  //クラスルーム生成
  const newroom = Classroom.Courses.create(course);

  //作成したクラスルームのID取得
  const newroomID = newroom.id;
  Logger.log(newroomID);  

  //作成したクラスルームのURL取得
  const newroomURL = newroom.alternateLink;
  Logger.log(newroomURL);  
   //スプレッドシートに書き出し
   sheet.getRange('B8').setValue(newroomURL); //セル番地

  //作成したクラスルームのドライブフォルダ情報取得
  const Drive = newroom.teacherFolder;
   //ID取得
   const Drive_ID = Drive.id;
   Logger.log(Drive_ID); 
   //IDをURLにしてスプレッドシートに書き出し
   const Drive_URL = 'https://drive.google.com/drive/folders/' + Drive_ID;
   sheet.getRange('B9').setValue(Drive_URL); //セル番地

//資料配布(閲覧のみ)
  //投稿内容設定
  const sample_movie = {
    //投稿タイトル
    title: 'サンプル動画',
    //説明文
    description: '動画を再生し、問題なく閲覧できることを確認してください。',
    //公開・未公開等の指定(参照ページ https://developers.google.com/classroom/reference/rest/v1/courses.courseWork#CourseWorkState)
    state: 'PUBLISHED',
    //投稿の種類(参照ページ https://developers.google.com/classroom/reference/rest/v1/CourseWorkType)
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        //添付ファイルのID
        "driveFile": {"id": "共有したいファイルのIDに差し替えてください"},  //添付ファイルのID
        //共有方法(参照ページ https://developers.google.com/classroom/reference/rest/v1/Material#ShareMode)
        "shareMode": 'VIEW'
        }
      }]
  };
  //クラスに投稿
  Classroom.Courses.CourseWork.create(sample_movie, newroomID);


さいごに

「資料」として投稿できていないのが少し心残りですが、取り敢えずはGASで添付ファイル付きの投稿に成功したということで次に進みたいと思います。それではまたお会いしましょう〜🐰

𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧
初回の記事はこちら

シリーズ一覧はこちら

𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧

𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧

いいなと思ったら応援しよう!