【GAS】スプレッドシートから小テスト用Googleフォームを作成する

授業の小テストやアンケートをオンライン化しよう!!

Googleフォームについて

【GAS】Google Forms から送信された情報から自動返信メールを作成・送信するこちらの記事でも紹介たようにGoogleが提供する便利ツールです。

今回は学校での小テストをオンライン化する際にこのGoogleフォームを使ってみます。

しかし、テストを毎回フォームの編集画面から編集するのは大変です…

そこでスプレッドシート(EXCELのようなもの)で管理できたら最高ですね!!!

ということで今回はスプレッドシートからGoogleフォームを作成するプログラムを紹介します!!

準備

今回は次の準備をしてください。

  • 使うブラウザはGoogle Chrome
  • Google アカウントを作成
  • ネットサーフィンができるPC

テスト作成シート準備

まず初めにGoogle Chromeを用いてGoogleアカウントでログインしてください。

スプレッドシートのダウンロード

『Googleフォームのテスト作成ツール』

上記のダウンロードボタンよりスプレッドシートをダウンロードします。

 

ダウンロードボタンを押して表示されるページで『コピーを作成』をクリックしてください。

コピーが完了すると、スプレッドシートが開かれると思いますので、それでダウンロードは完了です。

続いて先ほどダウンロードしたスプレッドシートの場所をみていきます。

Google Driveにアクセスする

Googleにアクセスしてアカウントに自身のGoogleアカウントでログインをします。

gas-autoreplymail-forms-1

 

画面の右上に表示されるが9こ正方形に並んだアイコンをクリックすると、YoutubeMaps翻訳などが表示されるので、その中から『ドライブ』を探してクリックします。

gas-autoreplymail-forms-1

Google Driveを開くと、そこに『コピー ~ Googleフォームのテスト作成ツール』という名前でスプレッドシートがあると思います。

それが先ほどダウンロードしたスプレッドシートになりますので、任意名前に変更・場所の移動させるなどをしてください。

続いてこのスプレッドシートの使い方を紹介します。

テスト作成シートの使い方

 

先ほどダウンロードしたスプレッドシートを開いてください。

見出しについて

スプレッドシートを開くと『問題文』、『出題形式』、『選択肢1〜8』、『正解』、『配点』があると思います。これらについて順に説明をしていきます。

問題文について

これはテストにおける問題文に該当します。ここに入力された内容がGoogleフォームでの質問文の部分になります。

出題形式について

出題形式のセルに『▼』があると思いますので、クリックしてみてください。すると『チェックボックス』、『ラジオボタン』、『プルダウン』と表示されますので、お好きな出題形式を選択してください。

選択肢1〜8について

これはテストにおける回答群になります。

正解について

先ほどの『選択肢1〜8』の中で正解となる問題の回答を記載してください。回答が8個未満の場合は未入力で問題ありません。

記載する内容は番号ではなく、正解となる選択肢に入力された『回答』です。正解の回答を選択肢からコピー&ペーストすることをお勧めします。

配点について

これはテストにおける問題の点数になります。

点数の入力は『半角数字での入力』のみですのでご注意ください。

テストの名前について

テストのタイトル、例えば『第○回理科小テスト』みたいなものを書きます。

 

画面下側に『フォームテスト』というものがあります。ここに入力されているものがテストの名前になりますので、作成するテストの名称に変更をしてください。

テストの作成

各セルに必要な文字を入力してください。

 

続いて『M列』にある『テスト作成』ボタンをクリックしてください。

初めてクリックされる方は、認証を求められるので、その説明をします。

 

先ほどの『テスト作成』ボタンをクリックすると、『認証が必要』と表示されますので、『続行』をクリックしてください。

承認の手順に関しては、こちらの記事をご覧ください。

関連記事

GASを実行しようとしてこんな画面が表示されたことありませんか? 今回はこの対処法についてお伝えしたいと思います。 Googleアカウントでの認証 Googleアカウントを用いた認証を行う際にアカウントの選択を行います。 […]

 

すると、自動でタブが閉じてスプレッドシートの画面に戻るので、再度『M列』にある『テスト作成』ボタンをクリックしてください。

 

プログラムが動作するので、少し待機すると『(テストの名前)の作成が完了しました。フォームはGoogleDriveの『ドライブ』に存在します。』と表示されればテストの作成が完了しました。

テストの確認

作成したテストの確認を行う方法を紹介します。

Google Driveにアクセスする

Googleにアクセスしてアカウントに自身のGoogleアカウントでログインをします。

 

画面の右上に表示されるメニューアイコンをクリックすると、YoutubeMaps翻訳などが表示されるので、その中から『ドライブ』を探してクリックします。

 

Google Driveを開くと、先ほど作成したテストの名前の『Googleフォーム』があります。

それをダブルクリックで開くことでさらに編集することが可能です。

複数のテストを作る方法

スプレッドシートに入力したテストの情報を消したくない場合があるかもしれません。

そう言った場合はシートをコピーして管理する方法がありあますので、それを紹介します。

 

画面下のシート一覧から『▼』をクリックして『コピーを作成』をクリックしてください。

新しくシートが作成されますので、任意の名前に変更して再度テストを作成することが可能になります。

この方法を用いれば1つのスプレッドシートで複数のテストの履歴を残せる、つまり、各教科で作成した小テストのデータを残すことが可能になります!!

お疲れ様でした!!

今回はスプレッドシートからGoogleフォームのテストを作成する方法を紹介しました。

『わからないこと』や『こう言ったことをしたい』ということなどがあれば、お問い合わせか、コメントでお送りいただけたらと思います!

今後もこうした情報を発信していきますので、ぜひお気に入り登録・フォローお願いします!!

おまけ

今回、私が作成した『Googleフォームのテスト作成ツール』のプログラムはこちらになります。

『自分もプログラムを書いて応用したい!』『プログラムでいろんなことをしたい!!』という方はご確認ください。

コメントでソースコード中に動作を書いてありますが、ご質問などがあれば、お問い合わせください。

ソースコード


function CreateTestForm() {
  // 開いているスプレッドシートのオブジェクトを取得する
  let Test_SH = SpreadsheetApp.getActiveSheet();
  // 問題シート読み取り Sheet_Data[行][列]
  const Sheet_data = Test_SH.getDataRange().getValues();
  // 問題シートにデータがない場合は処理を終了する
  if(Sheet_data.length<2){
    // メッセージボックスを表示
    Browser.msgBox('問題を検出できませんでした。\\n処理を終了します。');
    // 実行している関数の終了
    return;
  }
  // シートの名前からテストの名前を取得
  const FormTitle = Test_SH.getName();
  // テストの説明を入力「'」と「'」の間に文字を入力するとフォームの説明が入力可能
  const FormDescription = '';
  // フォームのインスタンスを作成
  const Form = FormApp.create(FormTitle);
  // フォームの説明を作成
  Form.setDescription(FormDescription);
  // フォームをテストモードに変更 true:テストモード/false:アンケートモード
  Form.setIsQuiz(true);
  // インクリメント変数
  let i=0,j=0;
  // フォームオブジェクト格納変数
  let Form_object;
  // 選択肢格納変数
  let Choices_array = [];
  // 「問題文」列の要素への記入がなくなるまでループする
  for(i = 1 ; i < Sheet_data.length ;i++){
    if(Sheet_data[i][1]=='ラジオボタン'){
      // ラジオボタンのフォームを作成する
      Form_object = Form.addMultipleChoiceItem();
    }else if(Sheet_data[i][1]=='チェックボックス'){
      // チェックボックスのフォームを作成する
      Form_object = Form.addCheckboxItem();
    }else if(Sheet_data[i][1]=='プルダウン'){
      // プルダウンのフォームを作成する
      Form_object = Form.addListItem();
    }else{
      // メッセージボックスを表示
      Browser.msgBox('問題形式の入力に誤りがあります。\\n処理を終了します。');
      // 実行している関数の終了
      return;
    }
    // 選択肢格納配列を初期化
    Choices_array = [];
    // 選択肢の数が1~8個であるため新しく選択肢の配列を作成
    for(j = 2 ; Sheet_data[i][j]; j++){
      Choices_array.push(Form_object.createChoice(Sheet_data[i][j]+'', (Sheet_data[i][10]==Sheet_data[i][j])));
    }
    // 問題文を設定
    Form_object.setTitle(Sheet_data[i][0]);
    // 選択肢を反映
    Form_object.setChoices(Choices_array);
    // 点数を反映
    Form_object.setPoints(Sheet_data[i][11]*1);
  }
  // フォーム作成完了表示
  Browser.msgBox(FormTitle+'の作成が完了しました。\\nフォームはGoogleDriveの『ドライブ』に存在します。');
}