スプレッドシートで期限管理②|GASでGmail通知!期限が近づいたタスクを担当者にリマインド

前回の記事では、期限が近づいたら条件付き書式を使ってセルの色を変える方法をご紹介しました。
この方法では、Googleスプレッドシート上で視覚的にタスクの期限を把握できるようになります。
ですが、「タスクの期限をスプレッドシートだけでなく、担当者に通知してリマインドしたい」 というケースもあるかもしれません。
そこで今回は、 期限の2日前または1日前になっても未完了のタスクがある場合に、担当者にGmailでリマインドを送る方法 をご紹介します。
期限が近づいたときにGmailで通知を送ることで、タスク管理の精度を向上させることができます。

完成イメージ


- 期限の2日前 or 1日前 になっても 未完了のタスク だけを通知
- 担当者にGmailでリマインドメールを送信
手順
GASの実行手順

今回の例では、以下の入力項目をもとに期限を判定し、メール通知します。
- シート名:タスク管理
- A列:タスク名
- B列:担当者
- C列:期限
- D列:進捗状況
- E列:メールアドレス
シート名を「タスク管理」として、GAS実行時にそのシートを参照します。
(シート名を変更する場合はGASのスクリプトも併せてご変更ください)

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

function myFunction(){
}
が最初から入っているため、消去して以下のスクリプトを貼り付けます。
function sendDeadlineReminder() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("タスク管理");
var data = sheet.getDataRange().getValues();
var today = new Date();
for (var i = 1; i < data.length; i++) {
var task = data[i][0]; // タスク名
var person = data[i][1]; // 担当者
var deadline = new Date(data[i][2]); // 期限日
var status = data[i][3]; // 進捗状況
var email = data[i][4]; // メールアドレス
// メールアドレスが空白の場合はスキップ
if (!email || email.trim() === "") {
Logger.log("スキップ: " + task + "(メールアドレスなし)");
continue;
}
var daysUntilDeadline = Math.ceil((deadline - today) / (1000 * 60 * 60 * 24)); // 期限までの日数
// 期限が「2日以内」で、かつ「完了」でない場合に通知を送る
if (daysUntilDeadline <= 2 && daysUntilDeadline > 0 && status != "完了") {
MailApp.sendEmail({
to: email,
subject: "【リマインダー】タスクの期限が迫っています",
body: "担当者: " + person + "さん" + "\nタスク: " + task + "\n期限: " + deadline.toLocaleDateString() +
"\n\n期限があと" + daysUntilDeadline + "日です。早めに対応をお願いします!"
});
Logger.log("メール送信: " + email + " - " + task);
}
}
}
スクリプトの説明
- シートを取得
-
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("タスク管理");
- スクリプトが実行されると、「タスク管理」 というシートを取得します。
- 必要に応じてシート名とスクリプトをご変更ください。
- シートのデータをすべて取得
-
var data = sheet.getDataRange().getValues();
- スプレッドシート全体のデータ を
data
という配列に格納します。
- スプレッドシート全体のデータ を
- 現在の日付を取得
-
var today = new Date();
- 今日の日付を取得し、期限までの日数を計算するために使用します。
- データを1行ずつ処理(1行目はヘッダーのためスキップ)
-
for (var i = 1; i < data.length; i++) {
- 2行目以降(i=1)から順に処理 します。
- 各行から必要な情報を取得
-
var task = data[i][0]; // タスク名 var person = data[i][1]; // 担当者 var deadline = new Date(data[i][2]); // 期限日 var status = data[i][3]; // 進捗状況 var email = data[i][4]; // メールアドレス
- スプレッドシートの各列のデータを変数に格納します。
- A列(タスク名) →
task
- B列(担当者) →
person
- C列(期限日) →
deadline
- D列(進捗状況) →
status
- E列(メールアドレス) →
email
- A列(タスク名) →
- スプレッドシートの各列のデータを変数に格納します。
- メールアドレスが空欄の場合はスキップ
-
if (!email || email.trim() === "") { Logger.log("スキップ: " + task + "(メールアドレスなし)"); continue; }
- メールアドレスが空欄の行は通知を送らずにスキップ します。
- 期限までの日数を計算
-
var daysUntilDeadline = Math.ceil((deadline - today) / (1000 * 60 * 60 * 24));
deadline
(期限日)とtoday
(今日の日付)の差分を計算し、期限までの日数(整数値) を求めます。
- 期限が2日以内(1日または2日)かつ「完了」でない場合に通知
-
if (daysUntilDeadline <= 2 && daysUntilDeadline > 0 && status != "完了") {
- 以下の条件を満たす場合にメールを送信します。
- 期限が「2日以内」かつ「今日より未来の日付」
- 「完了」になっていないタスク
- 以下の条件を満たす場合にメールを送信します。
- Gmailでリマインダー通知を送信
-
MailApp.sendEmail({ to: email, subject: "【リマインダー】タスクの期限が迫っています", body: "担当者: " + person + "さん" + "\nタスク: " + task + "\n期限: " + deadline.toLocaleDateString() + "\n\n期限があと" + daysUntilDeadline + "日です。早めに対応をお願いします!" });
- メール送信先:
email
(担当者のメールアドレス) - 件名:
【リマインダー】タスクの期限が迫っています
- 本文:
担当者: 田中さん
タスク: 資料作成
期限: 2025/02/20
期限があと2日です。早めに対応をお願いします!
- メール送信先:
- 送信ログを記録
-
Logger.log("メール送信: " + email + " - " + task);
- Google Apps Scriptのログに「どのタスクが誰に送信されたか」を記録します。

スクリプトを書いたら、好きな名前を付けて保存します。
(例:「タスクのリマインダー通知」)

担当者あてにGmailで通知が送信されます。
トリガーを設定してGASを自動実行
トリガーを設定することで、毎日または特定の時間間隔で自動実行が可能です。


Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

「時計アイコン」をクリックしてトリガーページを開きます。

「トリガーを追加」または「新しいトリガーを作成します」をクリックします。
(時間主導型を選択した例)

- 実行する関数を選択
-
- トリガーを実行した際に動かす関数を指定します。
- 実行のデプロイを選択:
-
- どのバージョンのスクリプトを使用してトリガーを実行するかを選びます。
- 通常は「
Head
」を選択して、最新のバージョンを使用します。
- イベントのソースを選択
-
- トリガーのきっかけとなるイベントを指定します。
- 「時間主導型」などの選択肢があります。
- 時間主導型は、指定されたスケジュールに基づいてスクリプトを実行するものです。
- 時間ベースのトリガーのタイプを選択
-
- 時間主導型のイベントソースを選択した場合に表示され、どの頻度で実行するかを設定します。
- 「
日付ベースのタイマー
」を選択すると、毎月決まった時間にスケジュールを設定できます。

保存をクリックして、トリガー設定完了となります。
これで毎日決まった時間にスクリプトが実行されます。

設定したトリガーは一覧で表示されます。
まとめ
- GASを使えば、期限が近いタスクを自動チェック
- 期限の2日前または1日前に未完了のタスクのみ担当者に通知
- 1日1回のトリガー設定で自動化が可能
この方法を使って期限の近づいたタスクを管理し、担当者に通知することで対応漏れを防ぐことができます。
さらに、スプレッドシートの条件付き書式による色付けと併用すれば、タスクの可視化と通知の両面からより効率的な運用ができます。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。
GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。
また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
貴方の業務改善を全力でサポートいたします。
コメント