GASでメール通知を送るなら、本文に「何が起きたか」と「次に何を見るか」を入れます。「処理が終わりました」だけでは、対象や件数が合っているのか、対応が必要なのかを受け取った人が判断できません。
例として、売上集計の結果を担当者へ知らせる通知を作ります。まず試運転で件名と本文を確認し、次に自分宛てで送る段階へ分けます。この記事ではGmailから実際の送信は行っていません。
通知へ入れる内容
以下は架空の集計を知らせる記入例です。実際の売上や業務の測定結果ではありません。
件名: 【確認用】売上集計 2026-11 / 2件
売上集計の確認をお願いします。
対象月: 2026-11
対象件数: 2件
合計: 2000円
確認先: 社内の確認用シート
対応: 元データの件数と合計を照合してください。
件名だけで、失敗なのか、確認依頼なのか、通常の完了通知なのかを区別できる形にします。本文には対象期間と件数を入れ、必要な場合だけ確認先のリンクを添えます。リンクを知っていれば誰でも開けるように共有設定を広げる必要はありません。
個人名や取引内容をすべてメールへ複製するより、権限を持つ人が元のシートを確認する形も選べます。通知に必要な情報と、元データに残す情報を分けます。
本文を作る関数と送信処理
GoogleのGmailAppリファレンスでは、sendEmailに宛先、件名、本文を渡します。次の例はSENDをfalseにしてあり、既定では本文の表示だけです。送る場合は、練習用のプロジェクトに自分の確認用アドレスを設定してから切り替えます。
function makeSummaryNotice(period, count, total) {
if (!Number.isSafeInteger(count) || count < 0 ||
!Number.isFinite(total)) {
throw new Error('件数と合計を確認してください');
}
return {
subject: '【確認用】売上集計 ' + period + ' / ' + count + '件',
body: '対象月: ' + period + '\n' +
'対象件数: ' + count + '件\n' +
'合計: ' + total + '円\n' +
'元データの件数と合計を照合してください。'
};
}
function previewOrSendNotice() {
const SEND = false;
const notice = makeSummaryNotice('2026-11', 2, 2000);
if (!SEND) {
console.log(JSON.stringify(notice));
return;
}
const to = PropertiesService.getScriptProperties()
.getProperty('TEST_RECIPIENT');
if (!to) throw new Error('確認用の宛先を登録してください');
GmailApp.sendEmail(to, notice.subject, notice.body);
}
本文生成では架空の値を使います。送信処理へつなぐ前に、件名、対象月、件数、合計が元の入力と対応するかを見ます。ログへ表示する内容も練習用のデータだけにしてください。本番では通知対象の情報をそのままログに残してよいかも確認します。
最初の送信と受信側の確認
自分宛てに1件送る段階では、送信するアカウント、受信先、件名、本文、迷惑メールへの振り分けを確認します。GASの処理が例外なく終わったことだけで、相手が読める場所まで届いたとは判断しません。
GmailAppを使うコードには、Googleサービスへの承認が必要です。承認の公式説明をもとに、どのアカウントが何の権限で実行するかを把握します。トリガーから送る場合は、作成者のアカウントで動く点も確認してください。
再送と重複の扱い
集計結果が同じなのに何度も通知すると、受信側が必要なメールを見落としやすくなります。対象月と処理の種類などから通知の識別子を決め、送信した時刻と結果を記録する運用にします。
途中で止まった場合は、送信済みの記録や実際のメールを確認してから再操作します。送信と記録は別の処理なので、記録が空欄でも、メールだけ送られている可能性があります。失敗したからと全件を再送する形にはしません。
メール数などの割り当てと制限はアカウントや利用条件に応じて確認します。通常の通知に失敗通知まで同じ経路だけを使うなら、その経路が止まったときに気づく方法も別に用意します。
