【GAS解説動画】スプレッドシートからのGoogleフォーム自動作成

GAS

Googleフォームで問題集を簡単に作りたい!

GIGAスクール構想の中で生徒一人一人が端末を持つ時代がやってきました。

これで私が考えたのが「問題集をGoogleフォームで作れば良いんじゃないか」ということです。

休み時間や家にいる時間に復習やテスト対策が簡単にできます。一問一答形式なので、以前まであったセンター試験のような形式の試験対策ならバッチリです。

問題や解答をシャッフルする機能なども搭載されているので、正解の選択肢を暗記するようなしょうもない問題練習をしなくて済むようになります。

「やるしかない!」

とやる気を出したのですが、いざフォームを作っているともどかしい気持ちを覚えます。

「前に作った問題はどんなのだっけ?」

そうなんです。フォームは問題数が増えると、どんな設問を用意したかを一目で確認するのが困難になってきます。

そのため、学校でのテスト作成のようにはいきません。

非常に便利なんですが、フォームから1つ1つ作るのは少し面倒・・・。
設問数が多くなると、前にどんな設問を用意したのか、などを確認するのが少し大変です。

エクセルで問題文と解答を作ってから、それをコピペすれば良いのですが、二度手間で面倒です。

数問なら大した手間ではないのですが、問題数が多くなればなるほど手間が増えて時間がかなりかかってきてしまいます。

せっかく便利なのに、面倒だからといってその便利さを使いこなせないのは勿体無いな、と思いました。

ここで何とかならないかと、色々調べた結果。GAS(Google Apps Script)というものに辿り着きます。GASによってプログラムでGoogleのアプリを動かすことが可能になります。

面倒なことはプログラムを組んでやらせれば良いんだ!
(手間を削減するために余分な手間をかけるという謎の矛盾した展開)

ということで、

  • 問題を作成
  • 問題文の貼り付け
  • 選択肢を設定
  • 回答の番号を設定

この4つの手順を全て自動でできるようにプログラムを組みました。

試行錯誤した結果を全部公開します。コードはコピペするだけ使えるので上手く使ってみてください。

3つの手順

自動化するには次の3つの手順が必要です。

画像付きで解説しているので、数分で準備が完了するようになっています。

手順①:スプレッドシートの用意

まず最初に問題作成用のスプレッドシートを用意します。

Googleドライブ内の適当なファイルを作成して、その中にスプレッドシートを作成します。

スプレッドシートを以下のように加工してください。プログラムで行と列などを指定するので、形式が変わると上手く読み込んでくれません。

見本

3行目は例題として、どう入力すればいいのかが書かれています。
これを参考に4行目以降に問題文・配点・正解数・解答・選択肢を入力してください。

※正解数によって、問題の形式が変わります。
正解数1:ラジオボタン形式の問題。選択肢の中から1つだけを正解として設定できる。
正解数2:チェックボックス形式の問題。選択肢の中から2つを正解として設定できる。

※何十問でも一度にフォームを作成することができますが、解くのに時間がかかるなど、使い勝手が悪くなるので、多くても20問までにしておいた方がいいかも知れません。

手順②:Apps Scriptにコードをコピーして保存

次に、ツールバー内の「拡張機能」→「Apps Script」を押して、新しく表示されたページに下のコードを丸々コピーして貼り付けてください。

function makeForm() {

  var activeSheet = SpreadsheetApp.getActive().getSheetByName('シート1');
  var formTitle = activeSheet.getRange(1,1).getValues();
  var formDescription = activeSheet.getRange(1,2).getValues();
  var form = FormApp.create(formTitle);
  form.setDescription(formDescription);
  form.setShuffleQuestions(true);
  form.setIsQuiz(true);

  var lastRow = activeSheet.getLastRow();
  var lastColumn = activeSheet.getLastColumn();
  var qestion = [];
  qestion = activeSheet.getRange(4,2,lastRow-3,lastColumn-1).getValues();

  for(var i = 0 ; i < qestion.length ; i++){

    var choices;
    
    if(qestion[i][0] !== ''){

      if(qestion[i][2] == 1){   
      //ラジオボタンの作成
        var item = form.addMultipleChoiceItem();
        
        choices = [
         item.createChoice(qestion[i][5],qestion[i][3]==1),
         item.createChoice(qestion[i][6],qestion[i][3]==2),
         item.createChoice(qestion[i][7],qestion[i][3]==3),
         item.createChoice(qestion[i][8],qestion[i][3]==4)
       ]
      }

      if(qestion[i][2] == 2){
        //チェックボックスの作成
        var item = form.addCheckboxItem();

        choices = [
         item.createChoice(qestion[i][5],qestion[i][3]==1||qestion[i][4]==1),
         item.createChoice(qestion[i][6],qestion[i][3]==2||qestion[i][4]==2),
         item.createChoice(qestion[i][7],qestion[i][3]==3||qestion[i][4]==3),
         item.createChoice(qestion[i][8],qestion[i][3]==4||qestion[i][4]==4)
       ]
      }

      item.setTitle(qestion[i][0]).setChoices(choices);
      item.setPoints(qestion[i][1]);
      
      //必須問題かどうか。必須問題にしたい場合は次の「//」を削除してください。
      //item.setRequired(true);
    }
  }
}

貼り付けたら「保存」を押しましょう。

保存

手順③:実行を押して終了

Apps Scriptの実行を押しましょう。保存ボタンの隣です。

実行

初回では確認のためのメッセージが表示されるので、承認と許可をしましょう。

承認
許可

そうするとコピペなどの面倒な作業は全てプログラムがやってくれます。

問題数にもよりますが10問くらいなら数秒で完了です。
人間がやると下手したら何分もかかる作業が、ほぼ一瞬で済むようになります。

そして、肝心のGoogleフォームはスプレッドシートのファイルがある場所に新しく生成されています。
ファイル名は一番最初のセル(A1)に入力した名前になっています。見本だと「タイトル」と入力されているセルです。

あとはこれをクラスルームなどで公開すればオッケーです。

作業過程の動画

カスタマイズして使いやすくする!

完成したシートをカスタマイズして使いやすくする方法をまとめました。

コメント

タイトルとURLをコピーしました