Untuk saat ini, halaman ini hanya tersedia dalam bahasa Jepang.

AI で作ったクイズの点数とまちがえた問題を、Google フォームで先生に届ける

要約

AI で作った HTML のクイズの点数を先生が集めるには、Google フォームの「フォームに事前入力する」で回答欄ごとの番号を調べ、クイズの最後に、点数を入れたフォームを開くリンクを付けます。生徒は開いたフォームで中身を確かめて「送信」を押し、先生はフォームの「回答」で届いたかを見ます。リンクの点数は生徒が書き換えられるので、練習の記録向きです。成績に使う小テストは、Google フォームのテストで採点します。

クイズを配れる URL をつくる

Free プラン: カード登録なし、公開 1 ページまで

目次

AI に作ってもらった 4 択クイズで、授業のあとに一人ひとりの点数を見たい。ところが HTML のクイズには、点数をためておく場所がありません。点数を先生のところへ運ぶ仕組みを、あとから足します。

手軽で確かなのは、Google フォームの事前入力リンクです。クイズの最後に、点数とまちがえた問題があらかじめ入った Google フォームを開くリンクを置きます。生徒は開いたフォームで中身を確かめて「送信」を押し、届いた回答は先生のフォームの「回答」に並びます。

このページは、先生がフォームを用意して回答欄の番号を調べる手順、クイズに足すコード(3 か所を書き換えるだけ)、先生が受け取りを確かめる手順、点数と名前の扱いの注意を説明します。クイズそのものの作り方と生徒への配り方は、ガイド 生成 AI で作った小テストを、URL で生徒全員に配る にあります。Google のヘルプは 2026 年 10 月 26 日に確かめました。

点数を集める流れ

先生と生徒の操作は、次の 5 つです。

  1. 先生が Google フォームに 4 つの欄(ニックネームか出席番号、授業の回、点数、まちがえた問題)を作って公開する。
  2. 先生が「フォームに事前入力する」で、欄ごとの番号を調べる。
  3. 先生がクイズのコードに番号を書き込み、クイズを公開する。
  4. 生徒はクイズを解き、最後に出るボタンでフォームを開いて、中身を確かめて「送信」を押す。
  5. 先生はフォームの「回答」で、届いた点数を見る。

クイズのページは、フォームに自動では送信しません。生徒がリンクを押すと、点数などが回答欄に入った Google フォームが開きます。このとき、リンクに入れた値は Google に届きますが、回答として記録されるのは、生徒が「送信」を押したときです。送信しなければ、先生の「回答」には届きません。公開したページで Convika がリンクのアドレスを記録することは、下の「点数の正しさと、名前の扱い」で説明します。

点数を集める方法は、ほかにもあります。

方法点数を決めるもの生徒の手間向いている使い方
HTML のクイズ+事前入力リンク(このページ)クイズのページが数える。フォームで生徒が書き換えられる解いたあと、ニックネームを入れて「送信」を押す毎回の練習の記録、宿題の確認
Google フォームのテストフォームの解答集で、Google フォームが採点するフォームの中で問題を解く成績に使う小テスト
生徒が点数を書き写すフォーム生徒が入力する画面の点数を見て、自分で打ち込む少人数の宿題

Google のヘルプ Google フォームでテストを作成、採点する によると、フォームの設定で「テストにする」をオンにし、質問ごとに「解答集」で正解と点数を決めると、Google フォームが採点します。正しさが大事な小テストはこちらを使い、このページの方法は、AI が作った見た目と動きのまま練習してもらい、その記録を残したいときに使います。

書き写すフォームを Convika のページに付けることもできますが、Convika のフォームが受け付けるのは同じ回線から 1 分に 5 件、1 時間に 20 件までです。学校の Wi-Fi でクラス全員が一度に送る使い方には向きません。

クイズから点数を送れるようにする 5 つの手順

1. Google フォームに 4 つの欄を作る

Google フォームで新しいフォームを作り、「記述式」の質問を 4 つ置きます。質問の名前は、たとえば「ニックネームか出席番号」「授業の回」「点数」「まちがえた問題」です。

ニックネームと出席番号のどちらを書いてもらうかは、先生が決めて生徒に伝えます。フルネームやメールアドレスの欄は作りません(理由は「点数の正しさと、名前の扱い」)。

フォームの「設定」で、次の 2 つを確かめます。

  • 「結果の概要を表示する」はオフのまま。 Google のヘルプ フォームを公開して回答者と共有する によると、これをオンにすると、回答できる人はだれでも、各質問への回答の全文やグラフを見られます。ほかの生徒のニックネームと点数が見えてしまいます。
  • 「回答を 1 回に制限する」は、生徒の端末しだい。 同じヘルプによると、オンにすると、フォームに入力するには Google アカウントへのログインが必要です。学校の Google アカウントでログインしていない端末で解くなら、オフにします。

最後に、右上の「公開」からフォームを公開します。同じヘルプの言葉では「回答者がフォームにアクセスできるようにするには、フォームを公開する必要があります。」です。「一般的なアクセス」では、リンクを知っているすべてのユーザーか、対象のグループを選べます。回答できる人を学校のドメインやグループに限ったときは、生徒はその Google アカウントにログインしている端末から送ります。

2. 事前入力リンクで、欄ごとの番号を調べる

同じヘルプの「回答を事前入力したフォームを送信する」の手順で、リンクを作ります。

  1. フォームを開き、右上のその他アイコンをクリックして、「フォームに事前入力する」を選ぶ。
  2. 4 つの欄に、見分けやすい仮の値を入れる。たとえば NAME、LESSON、99、MISSED。
  3. 「リンクを取得」をクリックし、上部に出るリンクをコピーする。

コピーしたリンクは、次のような形です(数字は架空の例です)。

https://docs.google.com/forms/d/e/(フォームの ID)/viewform?usp=pp_url&entry.1000000001=NAME&entry.1000000002=LESSON&entry.1000000003=99&entry.1000000004=MISSED

entry. に数字が続くものが、欄ごとの番号です。= のあとの仮の値を見れば、どの番号がどの欄かわかります。この例なら、NAME の前の entry.1000000001 が「ニックネームか出席番号」の欄です。このリンクは番号を調べるためのもので、生徒には配りません。

3. クイズのコードに、フォームの番号を書き込む

下の「書き換えて使うクイズのコード」をコピーし、スクリプトのはじめの 3 か所を書き換えます。

  • FORM_URL: コピーしたリンクの ? より前(/viewform まで)。
  • FIELD: 手順 2 で調べた 4 つの番号。
  • LESSON: 回答に残したい授業の名前。

いまの AI のクイズに足したいときは、AI に次の文を送ります。【】の中は、手順 2 で調べた値に書き換えます。

このクイズの最後に、Google フォームを開くリンクを足して。
- 正解の数と、まちがえた問題の番号(例: 2, 5)を数える
- 「ニックネームか出席番号」の入力欄を置き、前後の空白を除いて 20 文字までにする
- リンクは <a> にして、URL と URLSearchParams で組み立てた URL を href に入れる
  もとの URL: https://docs.google.com/forms/d/e/【フォームの ID】/viewform
  usp=pp_url と、次の 4 つを入れる
  【ニックネームの entry 番号】= 入力欄の値
  【授業の回の entry 番号】=「【授業の名前】」
  【点数の entry 番号】= 正解の数
  【まちがえた問題の entry 番号】= まちがえた問題の番号。なければ「なし」
- 入力欄が空のあいだは、リンクを押せないようにする
- リンクは新しいタブで開く。fetch や自動で送信する処理は書かない。フォームの「送信」は生徒が押す

4. 管理画面のプレビューで、先生が 1 回送ってみる

クイズの HTML ファイルを Convika に入れます。app.convika.com で登録し、「HTML ファイルからページを公開」の画面で、「ファイルから」にファイルを入れるか、「コードから」にコードを貼り付けて、「プレビューをつくる」を押します。「プレビューを開く」を押すと、公開する前のクイズを、スクリプトが動く状態で解けます。登録せずに作るプレビューではスクリプトが止まるので、問題も送信のボタンも出ません。

プレビューで最後まで解き、ニックネームに「テスト」と入れて、送信のボタンを押します。開いた Google フォームの 4 つの欄に、テスト、授業の名前、点数、まちがえた問題が入っているかを見て、「送信」を押します。届いたかの確かめ方は、下の「先生に届いたかを確かめる」です。

5. 公開して、生徒に URL を配る

「ページを公開する」を押し、「このページを開ける人」で「一般公開」を選んで「次へ」を押します。はじめての公開では、続いて大きな「無料で公開する」のボタンが出ます。押すとすぐに公開され、ページの下に Convika のバナーが出ます。出したくないときは、その下の「Convika のバナーなしで公開する」から Pro のお申し込み画面に進みます。

公開した URL の配り方(QR コード、Google Classroom、ロイロノート)は、ガイド 生成 AI で作った小テストを、URL で生徒全員に配る にあります。問題を直すときは、ページの画面の「HTML ファイルで更新」で、直したファイルを選ぶかコードを貼り付けて、「新しいバージョンとしてアップロードする」を押します。「プレビュー v2 ができました」のように出たら、「プレビューを開く」で最後まで解いて確かめ、「同じリンクで v2 を公開する」を押し、確認の画面で「公開する」を押します。アップロードしただけでは、生徒には前のクイズが出たままです。公開すると、同じ URL のまま入れ替わります。くわしくはガイド AI で作ったページを後から直したい。URL も QR コードもそのままで差し替える方法 にあります。

書き換えて使うクイズのコード

3 問の英単語クイズに、送信のリンクを付けたものです。1 つの HTML ファイルで、ほかのサイトから何も読み込まず、fetch などで自動的に送信することもしません。点数が Google に届くのは、生徒がリンクを押してフォームを開いたときで、回答になるのは、そのフォームで「送信」を押したときです。書き換える前でもブラウザで開いて解けます。そのときは最後に先生向けの案内が出て、送信のボタンは押せません。問題は QUESTIONS の中を書き換えて増やせます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>英単語クイズ</title>
<style>
  body { font-family: system-ui, sans-serif; max-width: 32rem; margin: 0 auto; padding: 1rem 1rem 5rem; line-height: 1.6; }
  button, input, #send { display: block; box-sizing: border-box; width: 100%; margin: .5rem 0; padding: .8rem; font-size: 1.1rem; border-radius: .5rem; }
  #send { background: #1a73e8; color: #fff; text-align: center; text-decoration: none; }
  #send:not([href]) { background: #9aa0a6; }
</style>
</head>
<body>
<h1>英単語クイズ</h1>
<p id="question"></p>
<div id="choices"></div>
<section id="result" hidden>
  <p id="score"></p>
  <label for="nickname">ニックネームか出席番号(入れると送るボタンが押せます)</label>
  <input id="nickname" maxlength="20" autocomplete="off">
  <a id="send" target="_blank" rel="noopener">先生に結果を送る(Google フォームが開きます)</a>
  <p id="note">開いたフォームで中身を確かめてから、「送信」を押してください。</p>
</section>
<script>
// 先生が書き換えるところ: FORM_URL、FIELD、LESSON
const FORM_URL = "https://docs.google.com/forms/d/e/EXAMPLE_FORM_ID/viewform";
const FIELD = {
  name: "entry.1000000001",
  lesson: "entry.1000000002",
  score: "entry.1000000003",
  missed: "entry.1000000004",
};
const LESSON = "英単語 第3回";

const QUESTIONS = [
  { text: "apple の意味は?", choices: ["りんご", "みかん", "ぶどう", "もも"], answer: 0 },
  { text: "river の意味は?", choices: ["山", "川", "海", "空"], answer: 1 },
  { text: "library の意味は?", choices: ["病院", "駅", "図書館", "公園"], answer: 2 },
];

const ready = !FORM_URL.includes("EXAMPLE_FORM_ID");
let index = 0;
let score = 0;
const missed = [];

function showQuestion() {
  const q = QUESTIONS[index];
  document.getElementById("question").textContent = `${index + 1}. ${q.text}`;
  const box = document.getElementById("choices");
  box.replaceChildren();
  q.choices.forEach((label, i) => {
    const button = document.createElement("button");
    button.type = "button";
    button.textContent = label;
    button.addEventListener("click", () => answer(i));
    box.append(button);
  });
}

function answer(i) {
  if (i === QUESTIONS[index].answer) score += 1;
  else missed.push(index + 1);
  index += 1;
  if (index < QUESTIONS.length) showQuestion();
  else showResult();
}

function formLink(name) {
  const url = new URL(FORM_URL);
  url.searchParams.set("usp", "pp_url");
  url.searchParams.set(FIELD.name, name);
  url.searchParams.set(FIELD.lesson, LESSON);
  url.searchParams.set(FIELD.score, String(score));
  url.searchParams.set(FIELD.missed, missed.length ? missed.join(", ") : "なし");
  return url.href;
}

function updateLink() {
  const send = document.getElementById("send");
  const name = document.getElementById("nickname").value.trim().slice(0, 20);
  if (ready && name) send.setAttribute("href", formLink(name));
  else send.removeAttribute("href");
}

function showResult() {
  document.getElementById("question").textContent = "";
  document.getElementById("choices").replaceChildren();
  document.getElementById("score").textContent = `${QUESTIONS.length} 問中 ${score} 問正解`;
  if (!ready) {
    document.getElementById("note").textContent =
      "先生へ: スクリプトのはじめの FORM_URL と FIELD を、自分のフォームの事前入力リンクに合わせて書き換えてください。";
  }
  document.getElementById("result").hidden = false;
  updateLink();
}

document.getElementById("nickname").addEventListener("input", updateLink);
showQuestion();
</script>
</body>
</html>

コードがしていることは、次の 4 つです。

  • 点数とまちがえた問題を、ページの中で数える。 最後の問題に答えると、「3 問中 2 問正解」のように出ます。
  • リンクを URL と URLSearchParams で組み立てる。 ひらがなや漢字、& や # のような記号をニックネームに入れても、別の欄に分かれたり途中で切れたりしません。
  • ニックネームが空のあいだは、リンクを押せない。 前後の空白は除き、20 文字までにします。
  • フォームを開くのは、生徒がリンクを押したとき。 fetch もフォームの自動送信も使いません。開いたフォームのアドレスには、ニックネームと点数が入ります。リンクは新しいタブで開くので、クイズの画面も残ります。

先生に届いたかを確かめる

Google のヘルプ フォームの回答を表示、管理する の手順で確かめます。

  • 届いた回答を見る。 フォームを開き、上部の「回答」をクリックします。「概要」に回答の全体、「質問」に質問ごとの回答、「個別」に 1 件ずつの回答が出ます。手順 4 のテストの回答が、4 つの欄そろって届いていれば準備完了です。
  • 一覧で見る。 「回答」の右上のスプレッドシートへのリンクアイコンで、回答をスプレッドシートに並べられます。出席番号順に並べ替えると、まだ送っていない生徒がわかります。
  • 授業のあとに締め切る。 フォームの右上の公開アイコンから「回答を受付中」をオフにすると、リンクを開いた人に、回答の受け付けが終わったことが表示されます。

授業の中で送ってもらうなら、「設定」の「確認メッセージ」を「受け取りました。この画面を先生に見せてください」のように変えておくと、送信まで終えた生徒が見分けやすくなります。同じ生徒の回答が 2 つ届いたときにどれを使うか(たとえば最初の 1 つ)も、先に決めて伝えておきます。テストで送った回答は、集計のときに除きます。

点数の正しさと、名前の扱い

点数は、生徒が書き換えられます。 リンクの点数は、開いたフォームの回答欄に入っているだけです。生徒は送信の前に回答欄を書き換えられ、リンクのアドレスを直しても変えられます。この方法で集まるのは、生徒が送った練習の記録です。成績に使うなら、上の表の Google フォームのテストで、フォームの中で解いてもらいます。

名前は、先生が決めた 1 つだけにします。 ニックネームか出席番号のどちらかにして、フルネームやメールアドレスは入れません。リンクのアドレスに入れた値は、Google に届くほか、生徒の端末の閲覧履歴にも残ります。Convika は、公開したページで押されたボタンの文字とリンク先のアドレスを、ページのアクセス解析のために記録します。このリンクのアドレスには、ニックネームと点数が入ります(個人情報の扱いは プライバシーポリシー)。

クイズのページ自体には、生徒のことを書きません。 一般公開したページは URL を知っている人ならだれでも開けるので、生徒の名前や点数の一覧をページに載せないでください。

Convika に、クイズの点数を集める機能や、開いた人がだれかを見分ける機能はありません。点数を受け取るのは、先生の Google フォームです。

よくある質問

AI で作ったクイズの点数を集めるにはどうすればいいですか?

Google フォームに点数などの欄を作り、「フォームに事前入力する」で欄ごとの番号を調べます。クイズの最後に、その番号で点数を入れたフォームを開くリンクを置くと、生徒は開いたフォームで「送信」を押すだけで送れます。点数は先生のフォームの「回答」に届きます。

Google フォームの事前入力リンクはどう作りますか?

フォームを開き、右上のその他アイコンから「フォームに事前入力する」を選びます。欄に値を入れて「リンクを取得」をクリックし、上部に出るリンクをコピーします。リンクの中の entry. に数字が続く部分が、欄ごとの番号です。

生徒が点数を書き換えることはできますか?

できます。事前入力した点数は、フォームの回答欄に入っているだけなので、送信の前に書き換えられます。リンクのアドレスを直しても変えられます。成績に使う小テストは、Google フォームのテスト(「テストにする」と「解答集」)で、フォームの中で解いて採点してもらいます。

Google フォームのテストと何が違いますか?

Google フォームのテストは、フォームの中で問題を解き、解答集で Google フォームが採点します。このページの方法は、AI が作ったクイズをそのまま解き、クイズが数えた点数をフォームに入れて送ります。クイズの見た目や動きを自由に作れるかわりに、点数は生徒が書き換えられます。

クイズで生徒の名前を集めても大丈夫ですか?

集めるのは、ニックネームか出席番号のどちらか 1 つにします。リンクのアドレスに入れた値は、Google に届くほか、端末の閲覧履歴にも残り、Convika で公開したページではリンク先のアドレスとして Convika のアクセス解析にも記録されます。フルネームやメールアドレスは入れません。

Convika はクイズの点数を記録しますか?

Convika に点数を集める機能はなく、開いた人がだれかを見分けることもしません。点数は、生徒が「送信」を押したときに先生の Google フォームに届きます。ただし、公開したページで押されたリンク先のアドレスは Convika が記録するので、このリンクを押すと、アドレスに入ったニックネームと点数も記録に残ります。リンクに入れるのは最小限にします。

出典

次のステップ

HTML ページにパスワードをかけて、知っている人だけに見せる方法

JavaScript で作った画面は、ソースを開けばパスワードが読めてしまいます。ChatGPT や Claude で作った HTML をアップロードし、自分のドメインのままサーバー側で確かめるパスワード付きのページにする方法を説明します。

関連記事

授業で配る方法

記事を共有する

点数を送れるクイズを、生徒の端末で開ける URL に

HTML ファイルをアップロードして公開すると、生徒は Chromebook や iPad のブラウザでクイズを解き、最後に点数を Google フォームで送れます。

クイズを配れる URL をつくる

Free プラン: カード登録なし、公開 1 ページまで