GAS - がんばった子どもたちに賞状を送ってあげよう!!
Google フォーム の小テストだったり、簡単なクイズ的なことをやることが増えてきましたよね😆
子どもたちは、日々新しいことを学び頑張っている。
そんな子どもたちに
と、賞状を作ってあげませんか??
[0] 出来上がり
このような Google フォーム で、
事前に設定した基準以上の点数を獲得すると…。
上記のようなメールに PDF が添付されて届きます!!🎉
もちろん、原本は、作成者(先生)のフォルダにも残っています。
どうですか!?
面白そうだし、もらうと励みになりませんか!?
[1] Google フォーム の準備
↓をクリックすると、新しい Google フォーム が作成されます!
[2-1] 基本質問の準備
基本質問として、下記の質問を必ず作ってください。
クラス名
出席番号
氏名
クラス、出席番号は、「プルダウン」にしています。
これはいろんな工夫があると思うんですけど、ボクはこの形にしています。
クラス名とか番号って数値を入れる時に、全角半角とかいろんな要素があったりするので、半角数字で「プルダウン」の方が後々の処理が面倒でないかなって。
(経験上)
もちろん、「回答の検証」で入力を制限する方法でも良いと思いますが、
それならこの方法でもいいかなって。入力するものは限られているわけだし。
[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] さらにちなみに。アドオンが!
フォームの送信後に資格証を発行したい場合は、↓のようなアドオン(無料制限あり)もあるので、ぜひ使ってみてください!
さらに、今回の参考はこちら
ポートフォリオ
YouTube チャンネル
いちばんやさしい Google Apps Script
何かと0から1を作るのは大変だと思います。学校はどこも似たような問題課題に対応していると思います。それなのに、先生って自分だけで頑張ろうとするんですよね。ボクの資料やnoteが1になって、学校ごとの現状に合わせてカスタムしていただければと思います‼️