✏️
【GAS】Googleスプレッドシートに並べたクイズをランダム出題する
はじめに
Googleスプレッドシートに並べてある問題から、ランダムに1つ選んで出題するクイズ機能を作ってみたので、紹介したいと思います。
作ったもの
-
Googleスプレッドシートに問題と答えを並べます。
-
メニューからクイズ/出題を選択します。
-
スプレッドシートに登録された問題からランダムに1つ選び、出題します。
-
答えを入力して、OKを押すと...
-
自分の入力と解答が表示されます。
覚えた英単語の復習、専門的な勉強、数学の復習、ツールの使い方の暗記、などといった様々な事柄に活用できるのではないでしょうか。
クイズの作り方
1. スクリプトエディタを開く
好きなスプレッドシートを開き、メニューからツール -> スクリプトエディタ を選択します。
2. スクリプトの編集
スクリプトエディタが開くので、以下のスクリプトを貼り付けて保存します。
// シートを開いたタイミングで実行
function onOpen(){
var sheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在開いているGoogleスプレッドシート
var myMenu= [];
myMenu.push({name: "出題", functionName: "showQuiz"}); // メニューへ項目の登録
sheet.addMenu("クイズ", myMenu); // メニュー追加
}
// 問題をランダムに1つ選び、ポップアップとして出す
function showQuiz() {
const ui = SpreadsheetApp.getUi();
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 現在開いているシート
const lastRow = sheet.getLastRow(); // 最後の行
const row = Math.floor((lastRow - 1) * Math.random()) + 2; // ランダム抽選
const range_question = sheet.getRange(row, 1); // セルの取得(問題)
const range_answer = sheet.getRange(row, 2); // セルの取得(答え)
// 問題を出す
const response = ui.prompt("問題 " + (row - 1), range_question.getValue(), ui.ButtonSet.OK);
// OKを押したら答えを出す
const response_complete = ui.alert(
"答え",
"【問題】\n" + range_question.getValue() + "\n\n【入力】\n" + response.getResponseText() + "\n\n【答え】\n" + range_answer.getValue(), ui.ButtonSet.OK);
}
プロジェクト名は simple_quiz としておきます。
3. Googleスプレッドのリロード
Googleスプレッドシートのページを再読み込みすると、メニューが追加されます。
4. 出題の実行
クイズ -> 出題 を選択します。
5. スクリプトの承認
スクリプトを実行しようとすると、承認が要求されます。
指示に従ってGoogleアカウントへログインすると以下のような画面が出てくるので、詳細をクリックします。
赤線で囲った部分をクリックします。
simple_quizの許可を求められるので、許可します。
以上でスクリプトを実行することができるようになり、クイズ機能が動くようになります。
6. クイズ機能を試してみる
-
メニューのクイズ -> 出題 を選択します。
-
スプレッドシートからランダムに抽選された問題が表示されます
-
試しにdecemberと入力して、OKをクリックします。
-
自分の入力と答えが表示されました。
Discussion