この記事は、GAS(Google Apps Script)とDiscordを連携させた英単語テスト自動作成システムの開発記録第2回です。
前回の記事では、システムの概要とGASとDiscordの連携方法を紹介しました。
今回は、実際に使うスプレッドシートの構成と初期設定についてまとめています。
シートの作成
前回の記事で作成したスプレッドシートを使う。まず、4つのシートを作成する。使用方法がわかりやすいように、「テストに出す英単語用」、「回答収集用」、「苦手問題」、「フォームのリンクと結果」とした。
| シート名 | 役割 |
|---|---|
| テストに出す英単語用 | 問題データを管理 |
| 回答収集用 | 回答と正答率を記録 |
| 苦手問題 | 正答率の低い問題を集約 |
| フォームのリンクと結果 | テストURLや結果を記録 |
テストに出す英単語用
最初のシートでは、テスト問題となる単語データを管理する。
シートの1行目を編集し、以下のようにする。
<列の説明>
問題:問題として表示するものを入力する。今回は英語を記述させたいので、日本語訳を入力しておく。実際に使用する際にはたくさん単語を入れておけばよいが、開発過程では数単語のみのほうがやりやすい。
type:もともと記述式と選択式の問題を出題できるように設けたものだが、現時点では記述式の処理しか実装していないため全て記述式と入力しておく。
必須:オートフィルですべてFALSEにする。(将来的に使用するかもしれない列として追加したが、現時点では未使用)
問題番号:問題を管理するための番号。これもオートフィルで入力する。
回答収集用
このシートでは、英単語テストの回答を収集し、正答率の計算を行う。
シートを以下のように編集する。
左側の黄色い欄にはテストの回答、右側の青い欄には正答率を記録する。
K列には "M列÷L列" の数式を入力しておく。

フォームのリンクと結果
このシートには、作成した英単語テストのURLやテストの結果を記録する。
これまでと同様に、以下のように編集する。
ここまで設定すれば、スプレッドシートの準備は完了。
※「苦手問題」のシートはまだ使用しないので、今は設定不要。
createItem関数作成
次に、フォームに問題を設定するときに使用する関数を準備する。
引数としてフォームIDと、スプレッドシートの「問題」、「type」、「必須」列の情報を受け取る。
If文のあとにコードを追加すれば、今後選択式問題なども追加できるようになる。
//Googleフォームのアイテムオブジェクトを返す関数
function createItem(form, title, type, required) {
if (required != true) {
required = false
}
if (type == "記述式") {
return form.addTextItem().setTitle(title).setRequired(required);
}
}
さいごに
今回の記事では、コードを書き始める前のスプレ準備について記述しました。
次回からは実際に 「自動で英単語テストを作成する関数」 の実装を始めていきます。


