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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1823閲覧

GASでのhtmlメール 二つの表を送信

Susuwatari

総合スコア2

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/01/27 11:53

gasでスプレッドシートのデータ取得して、html形式のメールを送信します。
表を二つ送信したいのですが、表が二つくっついてしまいます。
tbl& newtd&newtd2がくっついた形です。tbl2のデータは見当たりません。
イメージ説明

GAS

1function myFunction() { 2 3 //値取得、二次元配列格納 4 let sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("テスト"); 5 let sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("データ"); 6 7const range3 = sheet2.getRange(3,1,9,6); 8const range4 = sheet2.getRange(6,9,3,2); 9 10console.log("hani:"+range3.getValues()); 11console.log("hani2:"+range4.getValues()); 12 13 let vals = range3.getValues(); 14 let vals2 = range4.getValues(); 15 16let tbl = "<table border='1' style='border-collapse: collapse;'><tr><th>タイムスタンプ</th><th>毎日送信テスト</th><th>テスト</th><th>A</th><th>B</th><th>C"; 17 18//ここでは最後</table>でしめません。forでtrを追加して、一番最後に<table>を追加します。 19 20 let newtd =""; 21 22 vals.forEach(x=>{ //二次元配列valsから一つずつ配列取り出し 23 for(let elnum in x){ //取り出した一次元配列から一つずつ要素取り出し 24 newtd += "<td>"+x[elnum]+"</td>"; 25 } 26 let tr = "<tr>"+newtd+"</tr>" 27 tbl += tr; tr 28 newtd=""; 29 }) 30// let mailText =tbl +"</table>"//ここでtableを閉じます。 31 32 33let tbl2 = "<table border='1' style='border-collapse:collapase;<tr><tr>物</th><th>合計"; 34 let newtd2 =""; 35 vals2.forEach(x=>{ //二次元配列valsから一つずつ配列取り出し 36 for(let elnum in x){ //取り出した一次元配列から一つずつ要素取り出し 37 newtd2 += "<td>"+x[elnum]+"</td>"; 38 } 39 let tr = "<tr>"+newtd2+"</tr>" 40 tbl += tr; tr 41 newtd2=""; 42 }) 43 44let mailText = tbl +"<br><br><br><br></table>" + tbl2 + "</table>" 45 46 // //オプションでHTMLメール本文を設定する 47 48 let options = {"htmlBody":mailText,}; 49 // let options = {"htmlBody":mailText + mailText2,}; 50 51 //GmailApp.sendEmail(メールアドレス,メール表題,本文(htmlメール送信できないとき表示),htmlメールを設定({htmlBody:html本文}) 52 GmailApp.sendEmail("****@****","①テスト送信", mailText , options);

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

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

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

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

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

guest

回答1

0

ベストアンサー

実際に実行している関数が質問文通りのソースであるなら、

let tbl2 = "<table border='1' style='border-collapse:collapase;<tr><tr>物</th><th>合計";

このtbl2に代入するtableタグの閉じ記号>が存在しないので、有効なtableタグの開始タグと見なされていません。
表が上の表とくっついているのはこれが原因なのでは。
また、その行のtr,thの対応も正しくないと思われるので、落ち着いてタグの閉じ忘れ等を確認しましょう。

メールを送信せずにmailtextをログに出力し、そのhtmlがブラウザで正常に表示されるか確認してみるのも良いかと思います。

投稿2022/01/27 13:40

hope_mucci

総合スコア4447

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

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

Susuwatari

2022/01/27 14:22

ありがとうございます。 tableタグの閉じ記号気づいていませんでした。 直しましたが、tblデータ(タイムスタンプからcまで)&valsデータ(range3のデータ)&vals2データ(range4のデータ)が一つとなり、最後にmailTextでtbl2を追加しているためか、その後にtbl2(物、合計)が追加される形になります。 理想像は、 tblデータ(タイムスタンプからcまで)&valsデータ(range3のデータ)で一つ、 改行がいくつかあって、 tbl2(物、合計)&vals2データ(range4のデータ) なのですが。。。
Susuwatari

2022/01/27 14:41

<tr><tr>物 が、<tr><th>物 let tbl2 = "<br><br><table border='1' style='border-collapse: collapse;'><tr><th>物</th><th>合計"; と、tbl2のtableタグの前にbrタグを入れれば良かったんですね!! また、 newtd2="";前の tbl += tr; tr については、 tbl2+= tr; tr とするべきでした。 ありがとうございました!!
hope_mucci

2022/01/27 14:43

希望通りの形の表が出力できたようで何よりです。 今後も頑張ってください。
Susuwatari

2022/01/27 14:52

GAS学習1ヶ月弱、htmlはかすり程度、java全く未経験でした。 その中で、ポイント押さえてガイドくださり、ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問