前提・実現したいこと
利用ユーザの登録情報を検索・表示させるツールを作成しました。
登録情報はスプレッドシートにまとめられていますが、一覧開示が出来ないため、ユーザIDを入力することで該当の情報のみを表示させます。
該当データがHITした場合に情報を表示させることには成功したのですが、該当データがない場合に何かしらのメッセージを表示させたいのですが、どのようにすればよいでしょうか。
該当データの配列の個数をHTMLページに表示させる方法でも良いです。
Excelマクロ等は利用しておりますが、GASは初心者のため、本サイトなどを参考に切り貼りで作成いたしました。
ご教示いただけますと助かります。
発生している問題・エラーメッセージ
HTMLへデータを渡せない
該当のソースコード
◎GAS
var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
function doGet() {
var tpl = HtmlService.createTemplateFromFile('index');
return tpl.evaluate();
}
// 結果を返す
function getLoginData(key) {
var range = sheet.getRange("A:A").getValues();
var lastRow = range.filter(String).length;
var loginData = sheet.getRange(2, 1, lastRow, 3).getValues();
loginData = loginData.filter(function(v){return v[0] == key;});
Logger.log(loginData.indexOf(key))
return loginData;
}
◎HTMLファイル
<!DOCTYPE html> <html lang="ja"> <head> <title>スプレッド読込みテスト</title> <!--クライアントスクリプト--> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> var service = null; $(function() { $('#service').change(function() { service = $(this).val(); }).change(); }); </script> <script> function dispLoginData(loginData) { var td = ''; for (var i = 0, l = loginData.length; i < l; i++) { var v = loginData[i]; td += '<tr>\n<td>' + v[0] + '</td>\n<td>' + v[1] + '</td>\n<td>' + v[2] + '</td>\n</tr>\n'; } $('#loginTr').html(td); } </script> </head> <!--本体--> <body> <div id="container"> <h2>レポート検索</h2> <div class="form-inline text-center"> <div class="form-group"> <label for="namae">ユーザID:</label> <input type="text" id="service" name="service" size="30" maxlength="6"> </div> <div class="form-group"> <input type="button" class="btn btn-success" value="照会" onclick="google.script.run.withSuccessHandler(dispLoginData).getLoginData(service)"> </div> </div> <br> <table class="table table-bordered table-striped"> <tr> <th>ユーザID</th> <th>登録名</th> <th>ログインURL</th> </tr> <tbody id="loginTr"> </tbody> </table> </div> </body> </html>試したこと
ログ上ではデータが正しく取得できていることを確認
htmlファイルに <?=loginData.length?> や <?=l?> を記載すると
「ReferenceError: 「l」が定義されていません。(行 5、ファイル「コード」)」
とエラーが出てしまう
GAS側で個数のみを取得するfunctionを別途作成したが上手く動作せず、ログにも値が取得出来ていなかった。
回答1件
あなたの回答
tips
プレビュー