初心者でも安心!GASでメールに表を送信する方法
GASでメールに表を送信したいんだけど、どうやってやるんだろう?会社で頼まれちゃって困ってて…

猫男

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
その意気だ。実際にやってみて、慣れることがポイントさ。
練習問題
以下の問題を解き、GASでメールに表を送る理解を深めよう。
- スプレッドシートのデータを特定の範囲から取得したい場合、どのメソッドを使えば良いか?
- HTMLメールで表に背景色を加えたい場合、どのようにHTMLコードを変更すれば良いか?
解答・解説
-
function getSpecificRangeData() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const range = sheet.getRange("A1:C3"); const data = range.getValues(); return data; }
このコードでは、sheet.getRange(“A1:C3”)を使って特定の範囲のデータを取得しています。
-
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;’のようにスタイルを追加すれば良い。