見出し画像

13. スクリプトでクラスルームに課題(ドライブファイル)を作成する

この基礎編もいよいよ佳境に入ってきました。前回は、スクリプトでクラスルームにリンク付きの課題を作成する手順をご案内しました。
課題には資料と同様に、URLをリンクとして添付する方法と、ドキュメント、スプレッドシートなど、Googleドライブに保存したものをドライブファイルとして添付する方法があります。
今回は後者の、ドライブファイルを添付する手順を見ていきましょう。

ドライブファイルを確認しましょう

作業の前提をご説明します。
下の図が、クラスのドライブフォルダです。マイドライブからアクセスできます。ここに、ドキュメント、スプレッドシート、PDFファイルが保存してあります。

クラスのドライブ

今回は、「第1週スプレッドシート資料」というドキュメントを、クラスルームで課題として配布したいと思います。
その際に必要になるのが、ファイルのIDです。スクリプトでは、このIDのドライブファイルを課題に添付しますよ、という指示をします。では、そのIDはどうしたら分かるのでしょうか。
資料の際にもご説明していますが、簡単に調べられます。例えば上のドライブのドキュメントをダブルクリックで開いたとしましょう。
アドレスバーを見ると以下のようになっています。

ドキュメントのID

黄色くマーカーを引いた部分がファイルのIDです。dのあとの「/」にはさまれた部分です。スプレッドシートも見てみましょう。

同様に、「/」の間がIDということになります。こちらを控えておきましょう。

ちなみにPDFはどうしたらいいでしょうか。PDFを開いた時に表示されているアドレスは、フォルダのアドレスのまま変わりません。
PDFファイルの右端の三点から「共有」-「リンクをコピー」でリンクを取得できます。右クリックしても同様です。リンクをコピーして、前回ご紹介したリンクから添付する方法で配布していただくのが良いかと思います。

使用するコード

コードは以下の通りです。注目いただきたいのは13行目です。課題特有の指定です。詳細は下でご説明します。

// 課題(DriveFile)を作成します
function createCourseWorkAsDriveFile() {
  const courseId = "courseId";
  const array = {
    title : "課題(DriveFile)の作成",
    description : "スクリプトで課題(DriveFile)を作成します。ここに本文を記述します。例:「第1週授業の課題です。」",
    state : "DRAFT",
    materials : [{
      "driveFile" : {
        "driveFile" : {
          "id" : "ファイルのID"
        },
        "shareMode": 'STUDENT_COPY',
      }
    }],
    maxPoints : "100",
    workType : "ASSIGNMENT",
    topicId : "topicId"
  }
  const courseworkasdrivefile = Classroom.Courses.CourseWork.create(array, courseId);
  Logger.log("courseWork created : %s (%s)", courseworkasdrivefile.title, courseworkasdrivefile.topicId)
}

フィールドの説明

【3行目】
courseId

作成先クラスルームのコースIDです。3行目の文字列を書き換えます。ダブルコーテーションの間に記述します。
【5行目以降】
title
課題のタイトルです。
description
課題の説明です。本文をここに記述します。
state

課題のステータスです。課題を下書きで作成するには「DRAFT」とします。
「PUBLISHED」とすると作成してすぐに投稿されます。
materials - driveFile - driveFile - id
""内に課題として添付したいファイルのIDを入力します。ダブルコーテーションの間に記述します。(driveFIleが重複していますがミスではありません)
shareMode
可能な共有のオプションです。課題にファイルを添付してた際に指定するところです。
VIEW」とすると「生徒がファイルを閲覧できる」の設定、
EDIT」とすると「生徒がファイルを編集できる」、
STUDENT_COPY」とすると「各生徒にコピーを配布」、
と同様の指定になります。指定しない場合は「VIEW」になります。
今回は、「各生徒にコピーを配布」の設定です。
maxPoints
課題の最高得点(上限)です。0とすると「採点なし」になります。workType
課題を作成するには「ASSIGNMENT」とします。
topicId
作成先トピックのトピックIDです。"topicId"の文字列を書き換えます。ダブルコーテーションの間に記述します。

コースID、トピックIDが分からない場合は、以下の記事の手順で調べてみましょう。

スクリプトの追加と実行

さっそく進めていきます。よく確認しながら作業をしましょう。

1.Googleドライブから作成したプロジェクトファイルを開きます。

プロジェクトを開く
プロジェクトを開く

2.左上の「ファイルを追加」-「スクリプト」をクリックします。

ファイルを追加
ファイルを追加
スクリプトを選択
スクリプトを選択

3.名前を変更します。今回は「createCourseWorkAsDriveFile」です。
長くて申し訳ないですが、分かりやすい名前にしています。ここを間違ってもスクリプトに影響はありませんが、今後作成するスクリプトと名前が重複しないようにだけ、気をつけてください。

名前を変更
名前を変更

4.上のコードをスクリプトの作成画面右側に上書きでコピペします。

コードをコピペ
コードをコピペ

5.上のフィールドの説明を参考に、必要に応じて内容を書き換えます

6.スクリプトを保存して実行します。(実行時に承認を求めるウィンドウが出たら、指示にそって承認します。)

保存して実行
保存して実行

7.実行ログが表示されます。()内はトピックIDです。

実行ログ
実行ログ

実行結果の確認

実行の結果をクラスルームの画面を開いて確認してみましょう。教師の画面と生徒の画面を用意しました。黄色のマーカーを引いているところが、スクリプトで入力した箇所です。
ドキュメントがしっかり添付されています。

教師の画面

教師の画面
教師の画面

生徒の画面

生徒の画面
生徒の画面

いかがだったでしょうか。今回は、ドライブファイルを添付した課題の作り方をご説明しました。スクリプトを使って作成するようになって一番良かったのが、ケアレスミスが減ったことです。今回ご紹介した中で、「各生徒にコピーを作成」という指定をしています。
以前は、手動で作っていたのでここの設定を誤り、編集できなかったり、共有になってしまったりという事故がよく起こり、その度に慌てて対処してグッタリしていました。みなさまの中にも思い当たる方がいらっしゃるかもしれません。そこが皆無になりましたので、相当の精神的肉体的なストレスから解放されているのではないでしょうか。
極端に言えば、ここを書きたいがために、クラスルームの記事を書き始めたと言っても過言ではありません。

次回は、ユーザーの追加です。「スクリプトでクラスルームにメンバーを招待する」をお届けします。

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