Google Apps Script

毎朝9時にその日のタスクを
メールで自動送信

スプレッドシートに登録されたタスクのうち、当日が期限のものを自動で抽出し、毎朝9時にメールで通知するGASスクリプトです。

Google Apps Script 時間ベーストリガー Gmail API 日付フィルタリング
処理の流れ
毎朝9時
時間トリガー発火
📊
タスク取得
シートから全件読込
🔍
当日分を抽出
日付フィルタリング
📧
メール送信
一覧をメールで通知
スクリプト(GAS)
Google Apps Scriptmorning_task.gs
// 毎朝9時に当日期限のタスクをメール送信
function sendMorningTaskReport() {
  const ss    = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('タスク一覧');
  const data  = sheet.getDataRange().getValues();

  // 今日の日付(時刻なし)
  const today     = new Date();
  const todayStr  = Utilities.formatDate(
    today, 'Asia/Tokyo', 'yyyy/MM/dd'
  );

  // 当日が期限のタスクを抽出(1行目はヘッダーのためスキップ)
  const todayTasks = data.slice(1).filter(row => {
    const deadline = Utilities.formatDate(
      new Date(row[2]), 'Asia/Tokyo', 'yyyy/MM/dd'
    );
    return deadline === todayStr && row[3] !== '完了';
  });

  // タスクがなければ送信しない
  if (todayTasks.length === 0) {
    Logger.log('本日のタスクなし');
    return;
  }

  // メール本文を組み立て
  let body = `おはようございます。\n本日(${todayStr})のタスクです。\n\n`;
  todayTasks.forEach((row, i) => {
    body += `【${i + 1}】${row[0]}(担当:${row[1]})\n`;
  });
  body += `\n本日もよろしくお願いします。`;

  const to      = 'your-email@example.com';
  const subject = `【本日のタスク】${todayStr} / ${todayTasks.length}件`;
  GmailApp.sendEmail(to, subject, body);
  Logger.log(`送信完了: ${todayTasks.length}件`);
}

// ※ トリガー設定:「時間ベース」→「日タイマー」→「午前9時〜10時」
ポイント解説
時間ベーストリガーで完全自動化 毎日決まった時刻にスクリプトを自動実行。手動操作は一切不要です。
🔍
「完了」ステータスを除外 既に完了したタスクはフィルタリングして通知しないため、余計な情報が届きません。
📅
タイムゾーン対応 Utilities.formatDate で Asia/Tokyo を指定することで、日付のズレを防いでいます。