初心者でも安心!GASでメールに表を送信する方法

GASでメールに表を送信したいんだけど、どうやってやるんだろう?会社で頼まれちゃって困ってて…
猫男
猫男
catman
catman
よし、猫男。catmanが“GASでメールに表を送る”方法を教えてやろう!

GASでメールに表を送る基本の流れ

まずは、GASでメールに表を送信する基本的な流れを把握しよう。

ズバリ、

スプレッドシートからデータを読み取り、メールとして送信する

という方法で攻めるぞ。

スプレッドシートからデータを取得する

スプレッドシートから表データを取得するためには、まずGASでスプレッドシートにアクセスする必要がある。


function getSheetData() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  return data;
}

このスクリプトでは、現在アクティブなスプレッドシートからすべてのデータを取得している。

メールを作成するためのHTMLを組み立てる

取得したデータから、HTML形式でメールに挿入する表を作成する。


function createHtmlTable(data) {
let html = "<table border='1'>\n"; // テーブル開始
data.forEach(row => {
html += " <tr>\n"; // 行の開始
row.forEach(cell => {
html += ` <td>${cell}</td>\n`; // セルの追加
});
html += " </tr>\n"; // 行の終了
});
html += "</table>"; // テーブル終了
return html;
}

このコードは、取得したデータを基にHTML tableを生成する。

GASでメールに表を送信する

最後に、組み立てたHTMLを使ってメールを送信する。


function sendEmailWithTable() {
  const data = getSheetData();
  const htmlTable = createHtmlTable(data);
  const recipient = "example@example.com";
  const subject = "スプレッドシートの表データ";
  const body = "以下にスプレッドシートの表を表示します。";
  
  MailApp.sendEmail({
    to: recipient,
    subject: subject,
    htmlBody: body + htmlTable
  });
}

このコードでは、recipientで送信先のメールアドレスを指定し、subjectで件名を、bodyでメール本文を設定している。MailApp.sendEmail()を使ってHTML形式のメールを送信することが可能だ。

おお、これでなんとかメールで表を送れる気がする!ありがとう、catman!
猫男
猫男
catman
catman
その意気だ。実際にやってみて、慣れることがポイントさ。

練習問題

以下の問題を解き、GASでメールに表を送る理解を深めよう。

  1. スプレッドシートのデータを特定の範囲から取得したい場合、どのメソッドを使えば良いか?
  2. HTMLメールで表に背景色を加えたい場合、どのようにHTMLコードを変更すれば良いか?

 

解答・解説

  1. 
    function getSpecificRangeData() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      const range = sheet.getRange("A1:C3");
      const data = range.getValues();
      return data;
    }
    

    このコードでは、sheet.getRange(“A1:C3”)を使って特定の範囲のデータを取得しています。

  2. function createColoredHtmlTable(data) {
    let html = "<table border='1'>";
    data.forEach(row => {
    html += "<tr style='background-color: #f2f2f2;'>";
    row.forEach(cell => {
    html += "<td>" + cell + "</td>";
    });
    html += "</tr>";
    });
    html += "</table>";
    return html;
    }

HTML tableに背景色を加えるには、style=’background-color: #f2f2f2;’のようにスタイルを追加すれば良い。