GmailApp.sendEmailでデータ分析レポートを自動送信!業務効率を劇的に改善
データ分析は、ビジネスの意思決定において不可欠な要素です。しかし、分析結果をレポートにまとめ、関係者に共有する作業は、時間と手間がかかります。特に、定期的にレポートを作成する必要がある場合、その負担は無視できません。
そこで、Google Apps Script(GAS)のGmailApp.sendEmail
を活用することで、データ分析レポートの作成と送信を自動化し、大幅な業務効率化を実現できます。この記事では、GmailApp.sendEmail
の基本的な使い方から、データ分析レポートの自動送信に特化した応用例まで、具体的なコード例を交えながら解説します。
GmailApp.sendEmailとは?
GmailApp.sendEmail
は、GASからGmailを送信するための関数です。宛先、件名、本文を指定するだけで、簡単にメールを送信できます。HTML形式のメールや添付ファイルの送信も可能です。
基本的な使い方
GmailApp.sendEmail
の基本的な構文は以下の通りです。
GmailApp.sendEmail(recipient, subject, body)
recipient
:宛先メールアドレスsubject
:件名body
:本文
より詳細なオプションを指定する場合は、以下の構文を使用します。
GmailApp.sendEmail(params)
params
には、以下のオプションを指定できます。
to
:宛先メールアドレスsubject
:件名body
:本文(テキスト形式)htmlBody
:本文(HTML形式)attachments
:添付ファイル(Blob形式の配列)name
:送信者の名前cc
:CCbcc
:BCCreplyTo
:返信先メールアドレス
データ分析レポート自動送信の実装例
ここでは、データ分析レポートを自動送信するための具体的なコード例をいくつか紹介します。
例1:スプレッドシートのデータを集計してメール送信
スプレッドシートに蓄積されたデータを集計し、その結果をメールで送信する例です。
function sendSalesReport() {
// スプレッドシートIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "売上データ";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
// データを取得 (A2から最終行まで)
const data = sheet.getRange("A2:E" + sheet.getLastRow()).getValues();
// 売上を計算
let totalSales = 0;
for (let i = 0; i < data.length; i++) {
totalSales += data[i][4]; // 5列目が売上と仮定
}
// メール本文を作成
let body = "本日の売上レポートです。
";
body += "総売上: " + totalSales + "円";
// メールを送信
GmailApp.sendEmail({
to: "recipient@example.com",
subject: "【日次】売上レポート",
body: body,
name: "売上レポート自動送信システム"
});
}
例2:グラフを画像として添付してメール送信
スプレッドシートで生成したグラフを画像として添付し、メールで送信する例です。
function sendChartReport() {
// スプレッドシートIDとグラフID
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const chartId = "YOUR_CHART_ID";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
// グラフを取得
const chart = ss.getSheetByName("シート1").getCharts()[0]; // 最初のグラフを取得 (要調整)
// グラフを画像として取得
const blob = chart.getAs("image/png");
blob.setName("sales_chart.png");
// メールを送信
GmailApp.sendEmail({
to: "recipient@example.com",
subject: "【週次】売上グラフ",
body: "週次の売上グラフです。",
htmlBody: "
週次の売上グラフです。",
inlineImages: {sales_chart: blob.getDataAsString()},
name: "売上レポート自動送信システム"
});
}
例3:BigQueryのデータを抽出してメール送信
BigQueryに保存されたデータを抽出し、その結果をメールで送信する例です。
function sendBigQueryReport() {
// プロジェクトID、datasetID、テーブルID
const projectId = "YOUR_PROJECT_ID";
const datasetId = "YOUR_DATASET_ID";
const tableId = "YOUR_TABLE_ID";
// クエリ
const query = "SELECT * FROM `" + projectId + "." + datasetId + "." + tableId + "` LIMIT 10";
// クエリを実行
const job = BigQuery.Jobs.query({query: query, useLegacySql: false}, projectId);
const jobId = job.jobReference.jobId;
// 結果を取得
let rows = BigQuery.Jobs.getQueryResults(projectId, jobId).rows;
// メール本文を作成
let body = "BigQueryのデータレポートです。
";
if (rows) {
for (let i = 0; i < rows.length; i++) {
let row = rows[i].f;
body += "ID: " + row[0].v + ", Name: " + row[1].v + "
"; // 例: IDとNameカラム
}
} else {
body += "データが見つかりませんでした。";
}
// メールを送信
GmailApp.sendEmail({
to: "recipient@example.com",
subject: "【日次】BigQueryデータレポート",
body: body,
name: "BigQueryレポート自動送信システム"
});
}
よくある問題とトラブルシューティング
- メールが送信されない:GASの承認設定が完了しているか確認してください。また、送信制限に達していないか確認してください。
- 添付ファイルが正しく表示されない:添付ファイルの形式が正しいか確認してください。
- HTMLメールが正しく表示されない:HTMLの構文が正しいか確認してください。GmailでHTMLメールが正しく表示されるように、インラインスタイルを使用することをお勧めします。
カスタマイズ方法と応用例
- 送信間隔の調整:
Utilities.sleep()
を使用することで、送信間隔を調整できます。 - エラー処理の追加:
try-catch
文を使用することで、エラー発生時の処理を記述できます。 - 複数の宛先への送信:宛先を配列で指定することで、複数の宛先へ同時に送信できます。
- 定期的なレポート送信:トリガーを設定することで、定期的にレポートを送信できます。
まとめ
GmailApp.sendEmail
とGASを組み合わせることで、データ分析レポートの作成と送信を自動化し、大幅な業務効率化を実現できます。この記事で紹介したコード例を参考に、ぜひ自動化に挑戦してみてください。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう