前提・実現したいこと
GASをつかって、単語帳のアプリを作りたいのですが、ランダムに問題が出るのではなく、「WEB上にある”次へ”のボタン」を押すと2行目(1行目タイトル)から順番通りに問題と答えがWEB上で、表示されるようにしたいです。次の問題は、同じく「次へ」を押すと、次の問題が表示される。
For i ~ で作ってみましたが、うまくいきませんでした。ランダムの作り方は分かるのですが、順番どおりの表示の仕方が分かりません。
当方、独学で見よう見まねで作っております。今回は、WEB上にある情報を元に作っております、是非、お知恵をお貸しください。
参考元:https://qiita.com/Suibari_cha/items/87503c55d984ff0f43e6
発生している問題・エラーメッセージ
エラーメッセージは出ませんが、希望の内容が表示されません。
該当のソースコード
index.html <html> <head> <title>Quiz Web App</title> <script> // 次へボタンがクリックされたとき呼び出されるハンドラ function onbtnclickk(){ // html読み取り var answer = document.getElementById("answer"); var btn = document.getElementById("btnk"); if(answer.style.visibility == "hidden"){ // 答えが表示されていないので、答えを表示しボタンを「次の問題」に btn.innerHTML = "問題(国語)"; answer.style.visibility = "visible"; } else { // 答えが表示されているので、問題・答えを取得して答えを非表示にしボタンを「答えを見る」に new_quiz(); btn.innerHTML = "答え(国語)"; answer.style.visibility = "hidden"; } } // サーバ側スクリプトnew_quiz_sv()が実行成功したとき呼び出されるハンドラ function onSuccess (res){ // html読み取り var quiz = document.getElementById("quiz"); var answer = document.getElementById("answer"); // 問題のセット quiz.innerHTML = res[0]; // 回答のセット answer.innerHTML = res[1]; answer.style.visibility = "hidden"; } // サーバサイド関数を稼働させて、問題・答えを取得する関数 function new_quiz() { .script.run.withSuccessHandler(onSuccess).new_quiz_sv(); } </script> </head> <body> <table style="width: 100%;" cellspacing="100" cellpadding="0"> <tbody> <tr> <td style="vertical-align: top;" align="left"> <div id="quiz" style="font-size: 300%;"><br></div> </td> </tr> <tr> <td style="vertical-align: top;" align="left"> <button type="button" id="btnk" style="width: 30%; height: 200%; color: white; background: rgb(80, 184, 216) none repeat scroll 0% 0%; font-size: 400%;" onclick="onbtnclickk()">次へ</button> </td> </tr> <tr> <td style="vertical-align: top;" align="left"> <div id="answer" style="font-size: 300%;"></div> </td> </tr> </tbody> </table> <script> // 最初にHTMLが読み込まれたときに問題・答えを設定する new_quiz(); </script> </body> </html> ---------------- main.gs // GASが呼び出されたときに実行。HTMLを表示する function doGet(e) { var htmlOutput = HtmlService.createTemplateFromFile("index").evaluate(); htmlOutput .setTitle('学習')//タイトルを付ける return htmlOutput; } // スプレッドシート処理関数 function new_quiz_sv(){ // スプレッドシート処理 var sheet = SpreadsheetApp.openByUrl('https://xxxxxxxxxxxxxxx/') .getSheetByName('国語'); var lastRow = sheet.getLastRow(); // 問題文、回答文の取得 for (var i=2; i<=lastRow; i++) { var text_quiz = sheet.getRange("B" + i).getValue(); var text_answer = sheet.getRange("D" + i).getValue(); } return [text_quiz, text_answer]; } ソースコード
試したこと
for (var i=2; i<=lastRow; i++) {
var text_quiz = sheet.getRange("B" + i).getValue();
var text_answer = sheet.getRange("D" + i).getValue();
}
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
動作環境
windows7
chrome

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。