ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【数独を作ろう 3.】GASで値の取得、フォントサイズの設定をする方法
数独を作ろう一覧 ご訪問ありがとうございます。 Googleシートマスターのひろしです。 前回 今回は、とっても価値の高い方法をお伝えします。 これを知ることであなたは、 GASで値を取得することができます。 GASでチェックボックスの値を...
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- 1から9まで揃っているかどうかを検証する方法がわかります。
- 残り1個は何?とかエラーのチェックができます。
- GASでテストの仕方がわかります。
- さらにプログラミングの考え方がわかります。
なので、サクッとマスターして
と答えてあげてください。
今回は、ちょっと難しいかもしれませんが、
GASがどうのというよりプログラミングの話です。
今回の話を落とし込むことができれば、
今後、GASに限らず別の言語でのプログラミングや
マクロの作成もちょっと仕様を理解すれば、対応できるようになります。
なので、楽しみながら御覧ください。
動画はこちら
スクリプトはこちら
const CK_ERROR = -1 // エラー const CK_OK = 1 // 揃った const CK_LAST = 2 // あと1つ const CK_NORMAL = 3// 通常 //9桁のチェック function checkNum(buf) { let ckbuf = [, , , , , , , , ,] //チェックする数字を入れるバッファ console.log(buf) console.log(ckbuf) for (i = 0; i < 9; i++) { console.log(buf[i]) if (ckbuf[buf[i] - 1]) { console.log("エラー") return CK_ERROR } ckbuf[buf[i] - 1] = true } console.log(ckbuf) let ckcnt = 0 //いくつ入っているか let lastcnt = 0 //残っている数字 for (i = 0; i < 9; i++) { if (ckbuf[i] == true) { ckcnt++ } else { lastcnt = i + 1 console.log("入っていない ", lastcnt) buf[9] = lastcnt } } console.log("ckcnt = ", ckcnt) if (ckcnt == 9) { console.log("揃った") return CK_OK } if (ckcnt == 8) { console.log("あと1つ") return CK_LAST } return CK_NORMAL } //テスト用 function testchekbuff() { const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() let buff = sh.getRange("A1:I1").getValues() let tempbuff = [,,,,,,,,,] tempbuff = buff[0] console.log(tempbuff) let ret = checkNum(tempbuff) console.log(tempbuff) switch (ret) { case CK_OK: console.log(" 揃った") break case CK_LAST: console.log("あと1つ", tempbuff[9]) break case CK_NORMAL: console.log(" 通常") break case CK_ERROR: console.log("エラー") break } }
今回は、内部ロジックだけなので外見は、
変更なしです。
testchekbuff関数のbuf の値を変更して
CK_OK,CK_LAST,CK_NORMAL,CK_ERRORが
返却されることを確認してください。
次回は、数独のパネルから9桁ずつ切り出して
行きましょう。
最後までご覧いただきありがとうございます。
つぎはこちら
準備中