問題提起
私の高校では小テストをGoogle Formsで行っている。しかし私はある点に憤慨している。
それは毎回のテストで学籍番号を入力しなければならないことだ。これはデジタルの良さを完全に消している。
テストのたびに番号を間違えないように言われるが人間は愚かなのだ。間違えるに決まっている。
小テストを作成するときにこのような作りにしている学校も多いのではないのか?
この記事のゴールはメールアドレスから学籍番号を取得するGoogle Apps Scriptを作成することである。
これが完成すれば他のサービスでも学籍番号を取得ができるようになる。
環境
この記事では以下のサービスを利用する。
- Google Apps Script
- Google Sheets
解決策
1. 学籍番号を記録するスプレッドシートを作成する
まずは学籍番号を記録するスプレッドシートを作成する。
以下の画像のようにAの列に学籍番号をBの列にメールアドレスを記録する。
2. Google Apps Scriptを作成する
次にGoogle Apps Scriptを作成する。
Google Apps ScriptはGoogleのサービスを自動化するためのスクリプト言語である。
function searchStudentCode(email) {
// ここを変更するとどのシートでも動作します。
const SPREADSHEET_ID = "1PYtXAVw_YC7QLCD16G9yeAxamUbnBpwhWsN3jRZ0cdA";
const SHEET_NAME = "シート1";
//====================================================================
// GoogleスプレッドシートをIDで開く
var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
// シートからすべてのデータを取得
var data = sheet.getDataRange().getValues();
// データをループしてメールを見つけ、対応する学籍番号を返す
var studentId = "";
for (var i = 0; i < data.length; i++) {
if (data[i][1] == email) {
studentId = data[i][0].toString();
break;
}
}
// 学籍番号を返す
return studentId;
}
// 上の関数が動くかどうか確かめる
function testSearchStudentCode(e) {
var email = "aaa@gmail.com";
var studentId = searchStudentCode(email);
Logger.log(studentId);
}
このコードのtestSearchStudentCodeを実行すると、A列にある学籍番号が取得できる。
const SPREADSHEET_ID = "1PYtXAVw_YC7QLCD16G9yeAxamUbnBpwhWsN3jRZ0cdA";
const SHEET_NAME = "シート1";
この部分は自身のスプレッドシートのIDとシート名に変更する。
IDとは

スプレッドシートのURLの中にある「/d/」と「/edit」の間の文字列である。
3. 動作を確認する
このようにtestSearchStudentCodeを実行すると学籍番号が取得できる。
emailを変更することで他のメールアドレスの学籍番号も取得できるので確認してみてほしい。




