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

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

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

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

受付中

スプレッドシート内の情報をGASを使ってHTMLに組み込みたい

ppppp_123123
ppppp_123123

総合スコア1

Google Apps Script

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

1回答

0評価

0クリップ

214閲覧

投稿2022/07/01 19:11

前提

googleスプレッドシートで編集したものをGoogle Apps Scriptを通してHTML(テキストファイル)に書き出したい。
そのため、下記サイトのコードを参考にした。
https://www.terakoya.work/google-spread-sheet-html-template-output-save/

実現したいこと

カテゴリ毎にデータが複数存在している状態で
各カテゴリ毎に、取得するデータ範囲を指定し、データが入っている分だけ要素を繰り返しHTMLに書き出したい。
各カテゴリのデータは変動するため、切り分けたい。

(例)
【スプレッドシート:シート名(商品DB)】

ABC
画像URL1タイトル1説明文1
画像URL2タイトル2説明文2
   
   
   
画像URL1タイトル1説明文1
画像URL2タイトル2説明文2
画像URL3タイトル3説明文3
   
   

【HTML:ファイル名(index)】

<h2>カテゴリ1</h2> <ul> <? productData.forEach(function(option) { ?> <li> <img src="●A●" > <span>●B●<span> <span>●C●<span> </li> </ul> <h2>カテゴリ2</h2> <ul> <? productData.forEach(function(option) { ?> <li> <img src="●A●" > <span>●B●<span> <span>●C●<span> </li> </ul>

GASで以下を実現したい
A1:C5の範囲で最終行を読み込み商品数をカウント
HTMLのカテゴリ1の要素に値を埋め込み、商品数分くり返す

A6:C10の範囲で最終行を読み込み商品数をカウント
HTMLのカテゴリ2の要素に値を埋め込み、商品数分くり返す

試したこと

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("商品DB").getRange(1,1,5,3);; // 最終行を取得して商品点数を計算 var count = sheet.getLastRow() ; // HTMLテンプレートファイル指定(index) var html = HtmlService.createTemplateFromFile("index"); // 商品データをHTMLテンプレートファイルに html.productData = sheet.getRange(1, 1, count, 3).getValues(); Logger.log(html.productData); var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("商品DB").getRange(6,1,10,3);; var count = sheet.getLastRow() ; var html = HtmlService.createTemplateFromFile("index"); html.productData = sheet.getRange(6, 1, count, 3).getValues(); Logger.log(html.productData);

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

上記コードで実行したところ以下エラーで返されました

TypeError: sheet.getRange is not a function

要因、及び意図する動作をさせるために
どのようなコードが必要なのか、ご教示お願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

ppppp_123123

2022/07/02 10:04

回答を参考に var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("商品DB"); // 指定箇所の最終行(データが続いて下方向に入っている最終行)を取得して商品点数を計算 var count = sheet.getRange(1,1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); で実行したが、空白行も含めて読み込まれてしまっている状態です。 指定したそれぞれの範囲(A1:C5、A6:A10)で、データが入っている最終行を取得し商品数として計算して、商品数分のデータをHTMLに渡したいのですが、解決策がおわかりでしたらご教示ください。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

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