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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Q&A

解決済

1回答

1986閲覧

GASによるHTML出力時のエスケープ処理について

ppppp_123123

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

0グッド

0クリップ

投稿2022/06/01 04:25

編集2022/06/01 19:39

スプレッドシートに記載した項目をHTMLとして吐き出すGASを組みました。

スクリプトで登録したHTML上の<br>はHTMLタグとして読み込まれましたが
スプレッドシートから読み込む部分で、改行タグがエスケープ処理され

&lt;br&gt;

として吐き出されます。

▼GAS

function exportHTML() {  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名"); // 最終行を取得して商品点数を計算(-1は見出し行) var count = sheet.getLastRow() - 1; // HTMLテンプレートファイル指定(index) var html = HtmlService.createTemplateFromFile("index"); // 商品データをHTMLテンプレートファイルに html.productData = sheet.getRange(2, 1, count, 6).getValues(); Logger.log(html.productData); var outputFolder = DriveApp.getFolderById("フォルダID"); var date = new Date(); outputFolder.createFile("HTML_" + Utilities.formatDate(date, "Asia/Tokyo", "yyyyMMddhhmmss"), html.evaluate().getContent(), MimeType.HTML); }

▼HTML

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>タイトル</title> <meta name="description" content=""> <meta name="keywords" content=""> </head> <body> <? productData.forEach(function(option) { ?> <p> <?= option[1].replace(/\r?\n/g, '<br>'); ?> </p> <? }); ?> </body> </html>

スプシのセル内の改行を<br>タグとして吐き出したいのですが
ご教示いただけますでしょうか。

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

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

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

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

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

itagagaki

2022/06/01 05:03

置換しているところだけでなく出力しているところのコードも提示してください。
ppppp_123123

2022/06/01 05:59

ありがとうございます! 追記いたしました! よろしくお願いいたします!
itagagaki

2022/06/01 08:02

ん? <? productData.forEach(function(option) { ?> って、コードはJavaScriptっぽいけどPHPタグの中に記述していますか? これ、どう動くのでしょう…
guest

回答1

0

ベストアンサー

このような感じでしょうか?

gs

1function exportHTML() { 2 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名"); 3 4 // 最終行を取得して商品点数を計算(-1は見出し行) 5 var count = sheet.getLastRow() - 1; 6 7 // HTMLテンプレートファイル指定(index) 8 var html = HtmlService.createTemplateFromFile("index"); 9 10 // 商品データをHTMLテンプレートファイルに 11 html.productData = sheet.getRange(2, 1, count, 6).getValues(); 12 Logger.log(html.productData); 13 14 var outputFolder = DriveApp.getFolderById("フォルダID"); 15 var date = new Date(); 16 outputFolder.createFile("HTML_" + Utilities.formatDate(date, "Asia/Tokyo", "yyyyMMddhhmmss"), html.evaluate().getContent().replace(/&lt;br&gt;/g, '<br>'), MimeType.HTML); 17}

少々、無理矢理ですが、「html.evaluate()」後
<br>」はエスケープされて「&lt;br&gt;」になっているので、「getContent()」で取得し、「<br>」文字に置換するようにしました。

シート内容(内容は最小限になってます)出力ファイル内容
イメージ説明イメージ説明

投稿2022/06/01 10:11

編集2022/06/01 10:39
k.a_teratail

総合スコア845

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

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

ppppp_123123

2022/06/01 10:33

ありがとうございます! 意図する形で出力ができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問