毎日のメール送信業務を手動で行っていると、つい忘れたり負担に感じることがあります。GoogleスプレッドシートとApps Scriptを組み合わせれば、決まった時刻に自動でメールを送信する仕組みを簡単に作れます。この記事では、時間主導型トリガーを使って毎日自動メールを送信する方法を、具体的なコード例とともに解説します。この記事を読めば、あなたもすぐにメール送信の自動化を始められます。
【要点】Apps Scriptの定期実行トリガーで毎日自動メールを送信する方法
- 時間主導型トリガーの設定: スクリプトエディタの「トリガー」メニューから、実行したい関数と頻度(毎日・時刻)を指定します。
- GmailApp.sendEmail関数: スプレッドシートのデータを読み取り、宛先・件名・本文を指定してメールを送信します。
- 権限承認とエラーハンドリング: 初回実行時に権限の承認が必要です。また、送信制限やエラーに備えた処理も組み込みます。
ADVERTISEMENT
目次
Apps Scriptで自動メール送信ができる仕組み
Google Apps Scriptは、Google Workspace製品(スプレッドシート、Gmail、カレンダーなど)を操作するためのJavaScriptベースのスクリプト言語です。スプレッドシートにスクリプトを組み込むことで、セルの値の読み書き、Gmail経由のメール送信、定期的な処理の自動実行などが行えます。特に「トリガー」機能を使えば、指定した時刻やイベントをきっかけに関数を自動起動できます。時間主導型トリガーは、毎日・毎週・毎月など特定の間隔で関数を実行するための仕組みです。これにより、手作業でメールを送信する必要がなくなります。
毎日自動メールを送信するための手順
スクリプトエディタでメール送信関数を作成する
- スプレッドシートを開く
自動メールの送信元となるスプレッドシートを開きます。シートには宛先メールアドレス、件名、本文などのデータが入っていることを想定します。 - 拡張機能メニューからスクリプトエディタを開く
メニューバーの「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。 - メール送信関数を記述する
デフォルトのコード.gsに以下のような関数を記述します。function sendDailyMail() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var row = data[i];
var to = row[0]; // A列にメールアドレス
var subject = row[1]; // B列に件名
var body = row[2]; // C列に本文
if (to && subject) {
GmailApp.sendEmail(to, subject, body);
}
}
}
このコードは、アクティブなシートのデータを取得し、1行目以降の各行からメールアドレス、件名、本文を読み取って送信します。必要に応じてシート名の指定やエラーハンドリングを追加してください。 - スクリプトを保存する
Ctrl+S(Windows)またはCmd+S(Mac)で保存します。プロジェクト名もわかりやすい名前に変更しておきます。
時間主導型トリガーを設定する
- トリガー設定画面を開く
スクリプトエディタの左側メニューにある「トリガー」アイコン(時計マーク)をクリックします。 - 新しいトリガーを追加する
右下の「トリガーを追加」ボタンをクリックします。 - 実行する関数とイベントソースを選択する
「実行する関数」で先ほど作成した「sendDailyMail」を選びます。「イベントソース」は「時間主導型」を選択します。 - 頻度と時刻を指定する
「時間ベースのトリガーのタイプ」で「日タイマー」を選び、「時刻の間隔」で希望の時刻(例:午前8時~9時)を選択します。毎日その時間帯に実行されます。 - トリガーを保存する
「保存」をクリックします。初回は権限の承認が求められるので、手順に従って許可します。承認後、トリガーが有効になります。
自動メール送信で注意すべきポイント
1日あたりの送信制限を超えてしまう
Google Apps Scriptには、1日あたりのメール送信数に制限があります。無料アカウントでは1日100通まで、Google Workspaceアカウントでは1日1500通までです。大量のメールを送信する場合は、制限を超えないように計画するか、複数アカウントで分散する必要があります。また、送信前に現在の送信数をチェックする関数(MailApp.getRemainingDailyQuota)を使うと安全です。
トリガーの実行時刻がずれることがある
時間主導型トリガーは、指定した時間帯に実行されますが、正確な時刻は保証されません。例えば「午前8時~9時」に設定した場合、その1時間以内のどこかで1回実行されます。厳密な時刻指定が必要な場合は、代わりにCalendarのイベントトリガーや、外部のcronサービスを検討してください。
スクリプトのエラーが発生した場合の対処
スクリプト内でエラーが発生すると、それ以降の処理が止まります。try…catch文を使ってエラーハンドリングを組み込むことで、一部の行でエラーが起きても全体が停止しないようにできます。また、エラーが発生した際に自分宛てにメールで通知する仕組みも有効です。
ADVERTISEMENT
GUI設定とプログラム設定の比較
| 項目 | GUIで設定 | プログラムで設定 |
|---|---|---|
| 設定方法 | スクリプトエディタのトリガー画面から追加 | ScriptApp.newTrigger()でコード内に記述 |
| 柔軟性 | 簡単で視覚的だが、動的な設定変更は不便 | 実行時に動的にトリガーを作成・削除可能 |
| 利用シーン | 固定のスケジュールでよい場合 | 条件に応じてトリガーを変えたい場合 |
| 推奨度 | 初心者におすすめ | 上級者や動的制御が必要な場合 |
この記事では、毎日自動メールを送信するためのApps Scriptと時間主導型トリガーの設定手順を解説しました。まずスクリプトエディタでメール送信関数を作成し、トリガー設定画面から毎日実行するように指定します。注意点として、送信制限や実行時刻のずれ、エラーハンドリングを考慮することが重要です。GUI設定とプログラム設定の比較も参考に、自分の用途に合った方法を選んでください。次は、この仕組みを応用して、週次レポートの自動送信や条件付きメール送信にも挑戦してみるとよいでしょう。スプレッドシートとApps Scriptの組み合わせで、業務の自動化をさらに進められます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
