見出し画像

GAS - がんばった子どもたちに賞状を送ってあげよう!!

Google フォーム の小テストだったり、簡単なクイズ的なことをやることが増えてきましたよね😆

子どもたちは、日々新しいことを学び頑張っている。

そんな子どもたちに

よく頑張ったね!!👏

と、賞状を作ってあげませんか??

[0] 出来上がり

このような Google フォーム で、

事前に設定した基準以上の点数を獲得すると…。

上記のようなメールに PDF が添付されて届きます!!🎉

もちろん、原本は、作成者(先生)のフォルダにも残っています。

どうですか!?
面白そうだし、もらうと励みになりませんか!?

[1] Google フォーム の準備

↓をクリックすると、新しい Google フォーム が作成されます!

[2-1] 基本質問の準備

基本質問として、下記の質問を必ず作ってください。

  1. クラス名

  2. 出席番号

  3. 氏名

クラス、出席番号は、「プルダウン」にしています。
これはいろんな工夫があると思うんですけど、ボクはこの形にしています。

クラス名とか番号って数値を入れる時に、全角半角とかいろんな要素があったりするので、半角数字で「プルダウン」の方が後々の処理が面倒でないかなって。
(経験上)

もちろん、「回答の検証」で入力を制限する方法でも良いと思いますが、
それならこの方法でもいいかなって。入力するものは限られているわけだし。

[2-2] 設定

次に、「設定」から「テストにする」をオンにします。
↓のようなチェックが入っている状態にしてください。

次に、「メールアドレスを収集する」をオンにします。
(回答を一回に制限するは、適宜使ってください!今回のプログラムには関係ありません。)

このメールアドレスを取得して、そのアドレスに賞状を送ってあげるのです!

[2-3] 問題の準備

それでは、問題を作りましょう。

↓の例では、「セクションを追加」して、問題を作っていますが。
ここから先のセクション数や問題数は、自由に作ってください。

ただし、記述式の場合は、後から回答を通知しないといけなくなるので、自動で採点をしてくれる、選択式の質問にしておきましょう!!

  • ラジオボタン

  • チェックボックス

ですね!

[2-4] 解答の設定

こちらはわかる方は飛ばしてください!

「解答集を作成」をクリック!

右上で配点を設定します。
先に「テストにする」をオンにしておけば、デフォルトで1点になっています。

そして、正解の選択肢をクリックします!

この時、2つ正解がある場合は、2つでも解答の設定はできてしまいます。

完了を押してください!
(忘れがち)

ちなみに、「チェックボックス」の場合は、このように複数の解答を設定できます!

今回、ボクは、3問3点満点のテストにしてみました!

[3] Google スプレッドシート の準備

「回答」から、「回答をスプレッドシートに表示」をクリックします。

「作成」をクリックしましょう!
このようなスプレッドシートが生成されます。

[4] スクリプトの準備

「拡張機能」「AppsScript」をクリックします。

次のスクリプトを貼り付けてください!

var FromUrl = '';//不合格だった場合に、もう一度送るフォームのリンクを入れる

function send(e) {

var values = e.values;//フォームの回答を取得
var stamp = values[0];//タイムスタンプを取得(今回はなくても動きます)
var adress = values[1];//adressを取得
var score = values[2];//scoreを取得
var classroom = values[3];//クラスを取得
var number = values[4];//番号を取得
var name = values[5];//名前を取得

var scorenum = score.replace(/\/.*[0-9]/g, "");

//ここで何点以上で賞状を発行するかを設定
if(scorenum > 2){

// スライドを取得
  let template = DriveApp.getFileById('');//テンプレートとなる Google スライド のIDを入れる

// スライドのコピーを作成
  let folder = DriveApp.getFolderById('');//子ども用に新しく作成した Google スライド を保存するための Google ドライブ のフォルダのID
  let copySlideName = classroom + number + name;
  let copySlideId = template.makeCopy(folder).setName(copySlideName).getId();        
  let copySlide = SlidesApp.openById(copySlideId);
    
// テンプレートにフォーム情報からテキストを置換
  copySlide.replaceAllText("名前", name);
  copySlide.replaceAllText("日付", stamp);
  copySlide.replaceAllText("クラス", classroom);
  copySlide.replaceAllText("番号", number);
  copySlide.saveAndClose();
    
// メール添付用のスライドを取得
  let attachment = DriveApp.getFileById(copySlideId);

// メールの設定
  let subject = copySlideName + 'さんへ';
  let body = 'おめでとうございます!'+score+'点でした';
  GmailApp.sendEmail(adress, subject, body, {
    attachments: [attachment.getAs(MimeType.PDF)],
    name: copySlideName
    });
 } else {
      let subject = name + 'さんへ';
      let body = '残念!'+score+'点でした。\n\n' + '諦めずに挑戦しよう!!\n\n' + FromUrl ;
      GmailApp.sendEmail(adress, subject, body);
 }
}

まずは、この状態で 💾(保存)をしておきましょう!

[5] テンプレートのスライドを準備

↓をクリックすると、新しい Google スライド を作成できます!

どのようなテーマでもいいので、お好きなデザインを作ってみましょう!

この時、どこでもいいので、テキストボックスの中に、

  • クラス

  • 番号

  • 名前

  • 日付

という項目を作っておいてください。
これは、今回のボクが作ったプログラムでは、

クラス、番号、名前、日付にフォームで回答した人のクラス、出席番号、名前、回答した日時を入れるために準備します。

設定次第で変更は可能です!!

こんな感じでもいいです!

[6] Google スライド の共有設定

次にこのスライドの権限を変更し、編集可能にしてください。

これで完了です!
外部からこのスライドを操作するので、編集可能の状態にしておく必要があります。

[7] Google スライド のID

Google スライド のIDを取得して、スクリプトに入れます。

まず、Google スライド の ID は、URLの赤くなっている部分にあります。

必ず、1から始まっている文字列です。

https://docs.google.com/presentation/d/ここがID/edit?usp=sharing

このIDをコピーしてください。

そして、下記の '  '  の中に貼り付けてください!

// スライドを取得
  let template = DriveApp.getFileById(' ');//テンプレートとなる Google スライド のIDを入れる

[8] 新しく作成した Google スライド の保存先

この後、基準の設定の話をしますが、基準に達していると、
先ほどせて設定をしたテンプレートに沿って、賞状が発行されます!

その新しく発行した賞状の原本を保存しておく Google ドライブ のフォルダを設定するために、
保存先のフォルダのIDを取得します。

Google ドライブ のIDは、こちらでも触れていますので、ご覧ください!

取得したIDは、

// スライドのコピーを作成
  let folder = DriveApp.getFolderById('');//子ども用に新しく作成した Google スライド を保存するための Google ドライブ のフォルダのID

上記の '  ' の中に貼り付けてください!

そして💾(保存)をしてください。

[9] やり直し用の Google フォームのURL

賞状が発行できなかった子用に、フォームをやり直すURLは、

フォームの送信をクリック

🔗のアイコンにある、リンクをコピーしてください。

そして、

var FromUrl = '';//不合格だった場合に、もう一度送るフォームのリンクを入れる

'  '  の中に入れて、

そして💾(保存)をしてください。

[10] 実行

まずは、▶️(実行)をクリックしましょう!

そうすると、権限の承認ステップがありますので、許可をしてください。

実行されると、下の方に、↓のようなエラーが出ます。

このエラーは必ずおきますのでご安心ください!!!

なぜかというと、これからやりたいことは、Google フォーム で回答された結果を使って処理をしていきます。

まだ、Google フォーム で小テストやクイズが実施されてないですもんね???

[11] トリガーの設定

今回は、Google フォーム が送信された時に起動するようにしたいので、

左側の「⏰(トリガー)」をクリック

右下にある、「+ トリガーを追加」をクリックします。

「イベントの種類を選択」で、「フォーム送信時」にしてください。

「保存」をクリックすると、設定完了です。
(もしかしたら、権限の承認プロセスがまた出てきます。出てきたら許可をして行ってください)

[12] いよいよ実行

これで準備完了です。

それでは、Google フォーム の👁(プレビュー)から、お試してフォームを送ってみましょう!!

今回は、3点満点で3点を取れば賞状が発行されます!!
この設定をしている部分が、

//ここで何点以上で賞状を発行するかを設定
if(scorenum > 2){

上記のところです。

もし、2点以上にしたい場合は、

//ここで何点以上で賞状を発行するかを設定
if(scorenum >= 2){

のようにします。

↓は、10点以上という設定となります。

//ここで何点以上で賞状を発行するかを設定
if(scorenum >= 10){

もし、設定を変更したら、必ず💾(保存)をしてくださいね!!

ちゃんと賞状が発行されましたか!?😎

うまくいかない!!

など、お困りごとがあれば、コメント等いただけると幸いです😆

[13] ちなみに、似たようなことをやっていました。

[14] さらにちなみに。アドオンが!

フォームの送信後に資格証を発行したい場合は、↓のようなアドオン(無料制限あり)もあるので、ぜひ使ってみてください!

さらに、今回の参考はこちら

Twitter

Facebook

ポートフォリオ

YouTube チャンネル

いちばんやさしい Google Apps Script


何かと0から1を作るのは大変だと思います。学校はどこも似たような問題課題に対応していると思います。それなのに、先生って自分だけで頑張ろうとするんですよね。ボクの資料やnoteが1になって、学校ごとの現状に合わせてカスタムしていただければと思います‼️