0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS】(シンプル)スプレッドシートから値取得⇒gasでHTMLメール送信(table形式)

Posted at

###◆やること

  1. スプレッドシートから値取得
  2. gasでテーブル形式のhtmlにする
  3. htmlメール送信

以下コード


###◆コード

コード.js
function myFunction() {
  
  //値取得、二次元配列格納
  let vals = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getDataRange().getValues();
  
 
 //ここでforを使ってval⇒htmlのtable形式に

  //オプションでHTMLメール本文を設定する
  let mailText = "htmlを入れた変数";
  let options = {"htmlBody":mailText,};

  //GmailApp.sendEmail(メールアドレス,メール表題,本文(htmlメール送信できないとき表示),htmlメールを設定({htmlBody:html本文})
  GmailApp.sendEmail("メールアドレス","メール表題", mailText , options);

}

上記のforの中身を書くとしたら、下記の感じです。

コード.js
let tbl = "<table border='1' style='border-collapse: collapse;'><tr><th>ヘッダー1</th><th>ヘッダー2</th><th>ヘッダー3</th><th>ヘッダー4</th><th>ヘッダー25</th><th>ヘッダー6</th></tr>";
//ここでは最後</table>でしめません。forでtrを追加して、一番最後に<table>を追加します。

  let newtd ="";

  vals.forEach(x=>{    //二次元配列valsから一つずつ配列取り出し
    for(let elnum in x){    //取り出した一次元配列から一つずつ要素取り出し
      newtd += "<td>"+x[elnum]+"</td>";
    } 
    let tr = "<tr>"+newtd+"</tr>"
    tbl += tr; tr
    newtd="";
  })

  let mailText = tbl+"</table>"//ここでtableを閉じます。

自分は、あとは送信先アドレス一覧を別シートで用意して、
アドレス一覧取得、GmailApp.sendEmail("メールアドレス","件名", "本文" ,);
のアドレスに入れました。

あと、引っ張ってくる一覧をクエリ関数で作成、GASで日付書き換えて関数で内容変更⇒トリガーで定時に集計メールが届くようにしました。

###◆完成品(ほぼモザイクですいません)

スライド1.GIF

###◆その他

#####スプシにメアド書いて、それに送る

下記が参考になります。
【GAS】スプレッドシートからメールを送信する方法


#####ほかのhtmlファイルからテンプレート持ってくる

下記が参考になります。
Google Apps ScriptでGmailからHTMLメールを送信する方法

####感想
これぞ自動化という感じです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?