【GAS】2桁×2桁の100マス計算を生成する
こんにちは、ベトベトンです。
化学の勉強をしていて計算力あげたいなと思って2桁×2桁の100マス計算を生成するGAS(Google Apps Script)を作りました。(ChatGPTが作って自分は微調整だけですが)
わざわざパソコンを立ち上げて100マス計算をする変人がいるのかは不明ですがメモとして置いておきます。Googleのアカウントを持っている人ならば使えます。
GASのスクリプト
function create100MasuCalculation() {
// シートIDとシート名を指定
const spreadsheetId = ''; //スプレッドシートのIDを記入する
const questionSheetName = '100マス計算(問題)';
const answerSheetName = '100マス計算(答え)';
// スプレッドシートとシートを取得
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
const questionSheet = spreadsheet.getSheetByName(questionSheetName);
const answerSheet = spreadsheet.getSheetByName(answerSheetName);
// シートを初期化 (内容のみ削除、書式は維持)
questionSheet.getRange(1, 1, questionSheet.getMaxRows(), questionSheet.getMaxColumns()).clearContent();
answerSheet.getRange(1, 1, answerSheet.getMaxRows(), answerSheet.getMaxColumns()).clearContent();
// 2桁のランダムな数を生成
const min = 10;
const max = 99;
function getRandomNumber() {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// 100マス計算の問題を作成 (10行×10列)
let rowNumbers = [];
let colNumbers = [];
// 1行目(A2:J2)とA列(A3:A12)にランダムな2桁の数をセット(書式はそのまま)
for (let i = 1; i <= 10; i++) {
let rowNum = getRandomNumber();
let colNum = getRandomNumber();
questionSheet.getRange(1, i + 1).setValue(rowNum); // 1行目にランダムな数を配置
questionSheet.getRange(i + 1, 1).setValue(colNum); // A列にランダムな数を配置
rowNumbers.push(rowNum);
colNumbers.push(colNum);
}
// 計算結果を「答え」のシートに配置し、1行目とA列にも数をセット(書式はそのまま)
for (let row = 0; row < 10; row++) {
for (let col = 0; col < 10; col++) {
let result = rowNumbers[row] * colNumbers[col];
answerSheet.getRange(row + 2, col + 2).setValue(result); // 計算結果をセット
}
answerSheet.getRange(row + 2, 1).setValue(colNumbers[row]); // A列に使用した数をセット
}
for (let col = 0; col < 10; col++) {
answerSheet.getRange(1, col + 2).setValue(rowNumbers[col]); // 1行目に使用した数をセット
}
}
使い方
①適当なGoogleスプレッドシートを新しく作って、「100マス計算(問題)」「100マス計算(答え)」というシートを用意する。
↑で新しいシートを作りまする。
②拡張機能→Apps Script
③上記のコードをそのまま貼り付ける
④コードの以下の部分にシートIDを記入する
const spreadsheetId = '(ここに記入)'; //スプレッドシートのIDを記入する
⑤保存して実行を押せば終わり
実行しようとすると、警告が出てきますが普通に安全なスクリプトなので、実行して大丈夫です。
おまけ
①ボタンを設置
適当な画像を描画して、その画像に「スクリプトを割り当て」することで、クリックするだけでスクリプトを実行できます。
採点用シート
適当に関数を組んでおけば採点してくれます
①「採点」というシートを用意
②A1に以下の関数を貼り付け
=COUNTIF(B2:K11,"⭕️")&"/100"
③B1に以下の関数を貼り付け
=ARRAYFORMULA('100マス計算(問題)'!B1:1)
④A2に以下の関数を貼り付け
=ARRAYFORMULA('100マス計算(問題)'!A2:A)
④B2に以下の関数を貼り付け
=ArrayFormula(IF('100マス計算(問題)'!B2:K11="","",if('100マス計算(問題)'!B2:K11='100マス計算(答え)'!B2:K11,"⭕️","❌")))