GAS Date.getHours() で業務効率化!時間帯別メール送信自動化の徹底解説
Google Apps Script(GAS)の Date.getHours() 関数を利用して、時間帯に応じたメール送信を自動化する方法を解説します。特定の時間帯にメールを送りたい、営業時間外の問い合わせには別の対応をしたい、そんな業務課題をGASで解決します。この記事では、Date.getHours() の基本的な使い方から、具体的なコード例、トラブルシューティング、カスタマイズまで、現場で役立つ情報を提供します。
Date.getHours() の基本
Date.getHours() は、Dateオブジェクトから時間の値(0〜23)を取得する関数です。この関数を使うことで、現在の時刻に基づいて処理を分岐させることができます。
function getHour() {
const now = new Date();
const hour = now.getHours();
Logger.log(hour); // 現在の時間がログに出力される
}
時間帯別メール送信の実装例
ここでは、Date.getHours() を使って、時間帯別に異なる内容のメールを送信する例を紹介します。
例1:営業時間と時間外で自動返信を切り替える
営業時間(9時〜18時)内の問い合わせには通常の返信、時間外には自動返信を設定します。
function sendEmailBasedOnTime() {
const now = new Date();
const hour = now.getHours();
const recipient = 'test@example.com'; // 送信先メールアドレス
let subject = '';
let body = '';
if (hour >= 9 && hour < 18) {
// 営業時間内の処理
subject = 'お問い合わせありがとうございます';
body = 'お問い合わせありがとうございます。担当者よりご連絡いたします。';
} else {
// 営業時間外の処理
subject = '営業時間外のお問い合わせ';
body = '営業時間外のお問い合わせありがとうございます。翌営業日に対応いたします。';
}
MailApp.sendEmail(recipient, subject, body);
}
例2:時間帯によって異なる件名のメールを送信する
午前中は「おはようございます」午後には「こんにちは」といった件名でメールを送ります。
function sendTimeSpecificEmail() {
const now = new Date();
const hour = now.getHours();
const recipient = 'test@example.com'; // 送信先メールアドレス
let subject = '';
if (hour >= 6 && hour < 12) {
subject = 'おはようございます!';
} else if (hour >= 12 && hour < 18) {
subject = 'こんにちは!';
} else {
subject = 'こんばんは!';
}
const body = 'いつもありがとうございます。';
MailApp.sendEmail(recipient, subject, body);
}
例3:特定の時間帯にスプレッドシートのデータをメールで送信する
毎朝9時にスプレッドシートのデータを取得してメールで送信します。
function sendSpreadsheetDataAtSpecificTime() {
const now = new Date();
const hour = now.getHours();
// 9時になったら実行
if (hour === 9) {
const spreadsheetId = 'YOUR_SPREADSHEET_ID'; // スプレッドシートID
const sheetName = 'Sheet1'; // シート名
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
const data = sheet.getDataRange().getValues();
const recipient = 'test@example.com'; // 送信先メールアドレス
let body = '';
// データを文字列に変換
for (let i = 0; i < data.length; i++) {
body += data[i].join(',') + '\n';
}
const subject = 'スプレッドシートデータ(毎朝9時)';
MailApp.sendEmail(recipient, subject, body);
}
}
よくある問題とトラブルシューティング
- 時間指定がうまくいかない:
Date.getHours()で取得できる時間は、サーバーのタイムゾーンに基づいています。タイムゾーンの設定を確認してください。 - メールが送信されない: GASの実行権限が付与されているか確認してください。
- スクリプトがタイムアウトする: 大量のデータを処理する場合、スクリプトがタイムアウトすることがあります。処理を分割したり、非同期処理を検討してください。
カスタマイズ方法と応用例
- 祝日を除外する: 祝日判定APIを利用して、祝日にはメールを送信しないように設定できます。
- 複数の時間帯で異なる処理を行う: 複数の
if文を組み合わせることで、より複雑な時間帯別の処理を実装できます。 - スプレッドシートから時間帯設定を読み込む: スプレッドシートに時間帯の設定を記述し、GASで読み込むことで、設定変更が容易になります。
まとめ
Date.getHours() を活用することで、時間帯に応じたメール送信を自動化し、業務効率を大幅に向上させることができます。この記事で紹介したコード例を参考に、ぜひご自身の業務に合わせてカスタマイズしてみてください。
PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう