質問: sheet.getRange(i, 1, 1, 3).getValues(); Logger.log(loginData); return loginData[0]; } } } ``` 【index.html】 ``` スプレッド読込みテスト 発注案内 店コード: 店コード 店舗名 入荷数 ``` 上記のソースですと、該当するものが一つ(一行分)しか抽出・HTMLへ表示できません。 おそらく後へ後へと変数が書き替えられたためかと思われます。 ### 試したこと 店コードに対して該当する箇所が全て変数へ格納されているか確認するため ログ出力をしましたが GAS箇所にて「return loginData[0];」をコメントアウトにして 「Logger.log(loginData);」のみにして出力しましたところ 該当する複数行がログ出力されるのですが コメントアウトを解除(return loginData[0]; を有効)すると 一つ(1行分)しかログ出力されませんでした。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: ロジックに無駄が多いのは別として、基本的にはdefghi1977さんのご指摘どおりです。 更に細かく列挙すると以下のようになります。 * for文中でloginDataを上書きしている `var loginData = sheet.getRange(i, 1, 1, 3).getValues();` * returnの記述位置とは別に、そもそも`return loginData[0];`では二次元配列の先頭要素しか返していない(スプレッドシートで言えば1行分のみ) その上でGAS及びHTMLの修正をしたサンプルになります。 #### GAS for文は不要です。 ``` function getLoginData(key){ /*省略*/ var loginData = sheet.getRange(2, 1, lastRow, 3).getValues();//2~lastRow行目、3列分を二次元配列として取得 loginData = loginData.filter(function(v){return v[0] == key;});//入力店コードデータのみ抽出 return loginData; } ``` #### HTML for文中で3列分を一括挿入 ``` ``` なお、動作確認等はしておりませんので、参考まで。