質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

0回答

1596閲覧

GAS ⇔ HTML セレクトボックスに一覧が表示されなくなる。

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2020/02/29 16:21

前提・実現したいこと

Googleスプレッドシートをデータベースとして使用しております。
データベースの内容は、店舗名、住所、電話番号などの情報があります。

Google App Scriptを使用してGoogleスプレッドシートの情報を取得し、取得したシートのA列(店舗名一覧:A1に店舗1、A2に店舗2、、、)をサイト上のセレクトボックスを表示させ、選択した店舗名に関する情報(住所や電話番号など)が動的に表示させたいと思っております。

発生している問題・エラーメッセージ

セレクトボックスに店舗名一覧(店舗1、店舗2、、、)が表示される場合と表示されない場合があります。取得するシートの最終列が41以下だとエラーはないのですが、最終列が42以上で実行すると店舗名一覧が表示されなくなります。

該当のソースコード

コード.gs

function loading() { var ss = SpreadsheetApp.openById("シートID"); var listss = ss.getSheetByName("シート名"); var lastrow = listss.getLastRow(); var lastcolumn = listss.getLastColumn(); var list = listss.getRange(2, 1, lastrow-1, 41).getValues(); return list; } function doGet() { var html = HtmlService.createTemplateFromFile('index'); return html.evaluate(); }

index.html

<!DOCTYPE html> <html> <head> <base target="_top"> <meta charset="UTF-8"> <script> function preventFormSubmit() { google.script.run.withSuccessHandler(ListBack).loading(); } window.addEventListener('load', preventFormSubmit); function ListBack(data) { listdata = data; var list = document.getElementById('list'); for (var i=4; i<data.length; i++){ var option = document.createElement('option'); option.setAttribute('value', data[i][0]); option.innerHTML = data[i][0]; list.appendChild(option); } } function addElement(select) { for(var i=0; i<listdata.length; i++){ if(select.value ==listdata[i][0]){ break; } } var element = document.createElement('div'); var obj = document.getElementById("information"); var division = obj.getElementsByTagName('div'); if(division.length > 0){ obj.removeChild(division[0]); } element.class = "information"; element.innerHTML = "店舗名:" + listdata[i][0] + "<br>MAP(Google):<a href=\"" + listdata[i][10] + "\"target=\"_blank\">" + listdata[i][8] +"</a> <br>" + i + "行目"; obj.appendChild(element); } </script> </head> <body> <form> <div id="information"> <select id="list" name="list" onchange="addElement(this);" required><br> <option value=""></option> </select> </div> </form> </body> </html>

試したこと

コード.gs
var list = listss.getRange(2, 1, lastrow-1, 41).getValues();
⇒ エラーなし。※最終列が41以下だと問題なし。

var list = listss.getRange(2, 1, lastrow-1, 42).getValues(); ⇒セレクトボックスにA列(店舗名)が表示されない。※最終列を42よりも大きくするとセレクトボックスが表示されなくなる。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問