Google Apps Scriptで、小テストをぼこぼこ作る②

GASで小テストを自動作成したい②(機能をわける)

はじめに

Google Apps Scriptを使って、スプレッドシートからフォームのテスト機能を使った小テストをぼこぼこ作りたい(自動化したい)という記事です。

前回も書いたんですけど、とりあえず、ぼくはプログラミング初心者なので、たぶんもっとよいコードの書き方はあると思いますけど、逆に言えば素人でもこういうことはできるんだなあ、くらいに緩く読んでもらえれば幸いです。

あと、続くのかもわかりません。

気が向いたら、追記していく予定です。

前回の。

GASで小テストを自動作成したい①(データベース作成)Google Apps Scriptで、小テストをぼこぼこ作る①

やりたかったこと

  • いちいちGoogleFormで質問作るのはだるいので、スプレッドシートにデータ入れて、そっから勝手に小テスト作って欲しい。
  • 定期的にランダムにテストを作成して欲しい。
  • できれば自動採点してフィードバックまで勝手にやってほしい。(これは現状難しいことがわかった)

GASについては、この本を買って適宜参照しました。

Google Apps Scriptを使い始める

Google Apps Scriptどうやって使うの、という話については、もうたくさん情報が出ていますので、参考にしてください。

とりあえずいくつか貼っておきます。

参考 【保存版】初心者向け実務で使えるGoogle Apps Script完全マニュアルいつも隣にITのお仕事 参考 【Google Apps Script入門】GASでできることや活用方法まで紹介!Udemyメディア

というわけで、最初の設定とか、エディタ出すやり方とかは割愛します。

どういう機能がいるのか?

テストをランダムに作るために、どういう機能がいるのかを考えます。

createTestForm

まず、テストフォームを作成する機能が必要です。

Googleフォームを新しく作成して、タイトルをつけたり、テスト形式にしたり、質問の順番をシャッフルしたり、G suiteを導入しているんだったらログインを強制したり、1回だけしか解答を受け付けなかったり、といったことを設定する部分ですね。

これはひとまず、テストフォームを作るための関数として作っていくことにします。名前はcreateTestFormで。

MEMO
関数ってなに?という人は、このへんの記事を読んでください。
参考 JavaScriptで関数を使う方法【初心者向け】TECHACADEMY magazine

createQuestion

次に、質問をいっこいっこ作っていく関数を作ります。

これは別にcreateTestFormに書いてもいいんですけど、長くなるし、理想的には問題によって質問の形式を変えたいので、別途作った方が見通しが良くなりそうです。

質問を作る関数なので、createQuestionにしときます。

createTestFormのなかで、作成する問題数ぶんだけ、このcreateQuestion内に書かれた処理を繰り返し行うようにします。

formToFolder

さて、テストフォームができ、質問がぜんぶできたら、このフォームをどこに保存するかを考えないといけません。

じゃないと、Googleドライブの直下にぼこぼこ新しいテストができていってしまいます。

これはものすごくぐちゃぐちゃになるので、どっかに小テストが入るフォルダを作っておいて、そこに新しくできた小テストフォームを移してあげる必要があります。

これはフォームをあるフォルダーに移動させるので、formToFolderとかってしときます。適当です。

main

上に挙げた3つの関数を、mainという関数を実行することによって処理するようにします。

このmain関数は引数をとらず、他の関数に必要な引数の設定をするだけの関数です。

MEMO
引数ってなに? って場合はたとえばこれ読んでください。
参考 引数を使って関数へ値を渡すLet'sプログラミング

Googleスプレッドシートに紐づけたコードは、トリガーというのが使えます。

参考 Google Apps Script で毎日決まった時刻にスクリプトを実行するトリガー設定いつも隣にITのお仕事

要するに、定期的に勝手にコードを実行してくれるわけです。

この機能を使うときに、トリガーを複数の関数に設定するのはめんどうなので、main関数にまとめておき、main関数だけを実行するようにします。

まあ、このへんはどうするのが正解かはぼくはあんまよくわからないんです。教えてください。

機能を分割して考える

上のように、機能を分割して考えることはたぶんすごくだいじなことです。

こういうことをしたい、というのがあったときに、どの部分にそれを書けばいいのかが明確になるからです。

逆に言えば、おおざっぱに考えていると、どの部分に何を書けばうまくいくのかがよくわからなくなります。

こういうのは、文章を書くのといっしょですね。とりあえずざーっと書いてみて、それを部分に分けて構成していく。そのうえで、清書していく。

ということで、今回はこんな感じで。

あんまり張り切りすぎると息切れしちゃうので、のんびり更新していきます。

もし更新まで待てない! という人は、以下のサイトを参考にしてください。

ぼくはこのへんを見ながら作りましたので。

参考 Google Apps Script(GAS)&Googleフォーム&スプレッドシートでよく使うコード 参考 GASでGoogleフォームを作成する最も簡単なスクリプト 参考 <GASで小テスト作り> その1 Googleフォーム 参考 Google Formでクイズして、自動で答え合わせして、メールまで送っちゃうお

あとリファレンスだいじ。困ったら読む。

参考 Reference overviewGoogle Apps Script

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA