この記事では、GAS(Google Apps Script)を利用して、スプレッドシートに記載されているタスク中から期限が近いタスクをアラートメールで通知する方法をご紹介します。
GASやプログラミングが初めてという方でも理解できるように、各操作をステップごとに説明しています。
スプレッドシートとGAS、Gmailを組み合わせることで、簡単かつ効果的なリマインド機能を構築できます。
業務の進捗や締め切りを見逃さず、タスクを管理したい方には必見の知識となりますので、ぜひ最後までご覧になってください。
リマインドメールの重要性
リマインドメールは様々な状況で重要な役割を果たします。以下はその役割の一例です。
予定や締め切りの確認
リマインドメールは、会議、イベント、締め切りなどの予定を忘れることを防いでくれます。
重要な予定を見逃すことなく、計画を立てたり、タスクをこなすことができます。
タスクの効率化
優先順位を明確にしリマインドすることでタスクの処理順序を明確にできます。
適切な順序でタスクを処理できれば効率的な時間管理が可能となります。
コミュニケーションの補完
ビジネスやプロジェクトのコミュニケーションにおいても、リマインドメールは非常に有益です。
重要な情報やタスクに関するリマインドは、関係者間のコミュニケーションを円滑にし、プロジェクトの進捗を追跡するのに役立ちます。
売上やマーケティング
ビジネスや販売において、リマインドメールは顧客に対するプロモーションやセールのお知らせとして利用されることがあります。
これにより、商品やサービスの認知を高め、売上を促進する効果が期待できます。
リマインドメールは個人やビジネスにおいて計画の立て直しや忘れ物の防止、効率的なコミュニケーションを可能にし、生産性を向上させる重要なツールとなっています。
リマインドメールを適切に利用すればあなたの仕事やプライベートをより快適にすることができるでしょう。
スプレッドシートとGmailを組み合わせて自作アラート機能を作ってみよう!
スプレッドシートは、Googleが提供する表計算ツール。
タスクの管理にスプレッドシートを利用している方も多くいらっしゃるかと思います。
GASを用いることで、Gmailをシームレスに連携させスプレッドシートに記載されているタスクの期限を元に、簡単にリマインドメールの仕組みを構築できます。
この記事で解説する流れはこちらです。
- STEP1タスク管理用スプレッドシートを作成
まずは、メール情報を転記するスプレッドシートを作成します。
Googleドライブにアクセスし、新規ボタンをクリックしてスプレッドシートを選択します。
列名として1行目に「期限」、「ステータス」、「タスク名」、「タスク内容」を入力し、ファイル名を「タスク登録用スプレッドシート」として保存します。
- STEP2リマインドメール送信スクリプトの作成
次に、Google Apps Script (GAS) を使用してリマインドメール送信スクリプトを作成します。
スプレッドシートの「拡張機能」メニューから「Apps Script」をクリックし、新しいプロジェクトを作成します。
プロジェクト名を「SendRemindMail」に変更し、スクリプトファイルにプログラムを記述します。
プログラムの内容は、スプレッドシートからタスク情報を取得し、期限が近いタスクをGmailで通知する処理を行います。
- STEP3スクリプトの実行と動作確認
スクリプトが完成したら、Apps Scriptのエディタで保存し、実行ボタンをクリックして動作確認を行います。
スプレッドシートにサンプルデータを入力し、指定した条件に合致するタスクがリマインドメールとして送信されるかを確認します。
リマインドメールが正しく送信されれば成功です。
実際にGASでリマインド機能を実装してみよう!
ここからは具体的なスクリプトを作成して、Gmailの本文情報をスプレッドシートに瞬時に整理する方法を説明します。
今回の手順は、以下の通り。
- タスク管理用スプレッドシートを作成
- リマインドメール送信スクリプトの作成
- 動作確認
それぞれ詳細に説明していきます。
タスク管理用スプレッドシートを作成
まずは、メール情報を転記するスプレッドシートを作成します。
Googleドライブにアクセスしましょう。
ウェブブラウザからGoogleドライブ(https://www.google.com/intl/ja_jp/drive/)にアクセス。
「ドライブを開く」を押します。
まずGoogleアカウントでログインしておきましょう。
ドライブを開くと画像のような画面になります。
スプレッドシート新規作成
新規ボタンをクリックしてスプレッドシートを選択します。
列名とファイル名を設定
入力しなくてもスクリプトは動きますが見やすいように列名とファイル名を入力しておきましょう。
列名として1行目に以下の情報を入力しておきます。
- 期限
- ステータス
- タスク名
- タスク内容
こちらはコピー用です。
期限 | ステータス | タスク名 | タスク内容 |
ファイル名は、「タスク登録用スプレッドシート」としておきましょう。
期限、ステータス、タスク名、タスク内容を入れておきましょう。
リマインドメール送信スクリプト
いよいよGoogle Apps Scriptを記述していきます。
先程作成したGoogleスプレッドシートにて拡張機能-Apps Scriptをクリックします。
Apps Script画面に切り替わります。
まずは、簡単にApps Script画面についてご説明します。
- プロジェクト名 クリックすると変更できます。
- スクリプトファイル プロジェクトに配置されているスクリプトファイルを確認できます。各項目横の+ボタンを押すことでファイルを新規で作成できます。
- ツールバー スクリプト作成時に必要な操作ボタンがまとめられています。保存やデバッグ、実行ログ表示、操作を一つ戻るなど。
- エディターエリア スクリプトファイルの編集を行うエリア。こちらにプログラムを記述していきます。
手始めにプロジェクト名を変更してみましょう。
今回は、メール送信スクリプトなので「SendRemindMail」に変更しましょう。
続いてプログラムを記述していきます。
今回作成するプログラムの完成形は以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
function SendRemindMail() { //******************************** // 処理に必要な設定情報 //******************************** // シートを取得 let sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 最後の行を取得(繰り返し処理の回数) let last_row = sh.getLastRow(); // 処理を開始する行 (1行目は項目名なので2から) let topRow = 2; //今日の日付を取得し文字列を成型する let today = new Date(); let formatDate = Utilities.formatDate(today, "JST","yyyy/MM/dd"); // 取得列情報 const dayNum = 0 //期限 const statusNum = 1 //ステータス const taskNum = 2 //タスク名 const descriptionNum = 3 //タスク内容 // 送信メール情報 const subject = '【期限アラート】本日期限:' //タイトル let message = ''//本文 const sendMailAddress = '送信先メールアドレスを記述' //送信先メールアドレス //******************************** // スプレッドシートのスケジュール情報を取得 //******************************** const InputTask = sh.getRange(topRow, 1, last_row, 4).getValues(); //繰り返し処理(1行ずつ処理し、行の数だけ繰り返す) for(let i = 0; i <= last_row - topRow ; i++) { //期限 let daytmp = InputTask[i][dayNum]; let day = Utilities.formatDate(daytmp, "JST","yyyy/MM/dd"); //ステータス let status = InputTask[i][statusNum]; //タスク名 let task = InputTask[i][taskNum]; //タスク内容 let description = InputTask[i][descriptionNum]; //******************************** // メール送信処理 //******************************** //期限が今日以前かつステータスが完了となっていないタスクのアラートメール作成 if(formatDate >= day && status !== "完了"){ // 本文を設定 message = '■タスク名:' + task + '\n■タスク内容:'+ description + '\n■状況:'+ status + '\n■期限:'+ day; // メール送信 GmailApp.sendEmail(sendMailAddress,subject + task,message); } } } |
仕組みはどうでもいいのですぐに動かしたいという方はこちらをコピー&ペーストして動作確認の項に進んでいただければOKです。
内容も理解したいという方のためにスクリプト作成の手順を説明していきます。
メイン関数を作成
最初に関数を作成します。
関数とは、一つの目的のため複数の処理を一つにまとめて記述したものです。
GASではこの関数を呼び出して処理を実行します。
今回は、SendRemindMail
という名前のメイン関数を作成します。
エディタエリアに以下のように記述します。
1 2 3 4 |
function SendRemindMail() { } |
設定情報を記述
スプレッドシートの情報など設定情報を記述します。
以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//******************************** // 処理に必要な設定情報 //******************************** // シートを取得 let sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 最後の行を取得(繰り返し処理の回数) let last_row = sh.getLastRow(); // 処理を開始する行 (1行目は項目名なので2から) let topRow = 2; //今日の日付を取得し文字列を成型する let today = new Date(); let formatDate = Utilities.formatDate(today, "JST","yyyy/MM/dd"); // 取得列情報 const dayNum = 0 //期限 const statusNum = 1 //ステータス const taskNum = 2 //タスク名 const descriptionNum = 3 //タスク内容 // 送信メール情報 const subject = '【期限アラート】本日期限:' //タイトル let message = ''//本文 const sendMailAddress = 'メールアドレスを記述' //メールアドレス |
このエリアでポイントとなるのは、日付データの処理です。
日付データは、Date()関数で取得できます。
Date()関数の主な使い方は以下。
1 2 3 4 5 6 7 8 9 |
// 今日の日付を取得 let date = new Date(); // 特定の日時を取得(例:2023年11月12日09時26分30秒) let date = new Date(2023, 11, 12, 9, 26, 30); // こんな記述もできます。 let date = new Date('2023/11/12 09:26:30'); |
応用編として昨日の日付や数カ月後の日付などの取得も可能です。
1 2 3 4 5 6 7 |
//現在時刻を取得 var date = new Date(); //昨日の日付を取得 var date.setDate(date.getDate() - 1); //2ヶ月後の日付を取得 var date.setDate(date.getMonth() + 2); |
取得した日付データは、Date型という特殊なデータなのでメールに記載すると文字化けしてしまいます。
そのため、Utilities.formatDate()関数を用いて文字列に変換しています。
sendMailAddressには、リマインドメールを送信したい送信先のメールアドレスを設定してください。
スプレッドシートのタスク情報を取得
設定情報の記述ができましたらスプレッドシートから情報を取得する処理を記載します。
スプレッドシートのタスク情報取得処理は、以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//******************************** // スプレッドシートのタスク情報を取得 //******************************** // スプレッドシート情報取得 const InputTask = sh.getRange(topRow, 1, last_row, 4).getValues(); //繰り返し処理(1行ずつ処理し、行の数だけ繰り返す) for(let i = 0; i <= last_row - topRow ; i++) { //期限 let daytmp = InputTask[i][dayNum]; let day = Utilities.formatDate(daytmp, "JST","yyyy/MM/dd"); //ステータス let status = InputTask[i][statusNum]; //タスク名 let task = InputTask[i][taskNum]; //タスク内容 let description = InputTask[i][descriptionNum]; } |
この処理では、スプレッドシートのタスク情報を取得し一タスクずつ情報を取得します。
スプレッドシートの情報取得は、getRange()を利用します。
主な使い方は、以下。
1 2 3 |
// A列の1行目から3行目までのセル範囲を取得 var range = sheet.getRange(1, 1, 3, 1); // 開始セル(1,1)から3行1列分 |
取得した情報は、InputTask変数に格納します。
その後、InputTaskの中身を繰り返し処理を利用して一タスクずつ取得していきます。
繰り返し処理は、for()関数を利用します。
1 2 3 4 5 6 7 8 9 10 |
// for ループの基本的な構文 for (初期化; 条件式; 増減式) { // ループ内で実行されるコード } // 例: 1 から 5 までの数字をコンソールに出力する for (var i = 1; i <= 5; i++) { Logger.log(i); } |
この例では、変数 i
が初期値 1
から始まり、5
以下の条件を満たす限り、1
ずつ増加するという基本的な for
ループがあります。
各ループの実行時には、コンソールに i
の値が表示されます。
メールの送信処理
最後に取得したタスク情報から期限が今日かつステータスが完了していないタスクをGmailで送信します。
以下の内容を「スプレッドシートのタスク情報を取得」の項で記述したfor関数の中括弧の末行に記述しましょう。
1 2 3 4 5 6 7 8 9 10 11 |
//******************************** // メール送信処理 //******************************** //期限が今日以前かつステータスが完了となっていないタスクのアラートメール作成 if(formatDate >= d1ay && status !== "完了"){ // 本文を設定 message = '■タスク名:' + task + '\\n■タスク内容:'+ description + '\\n■状況:'+ status + '\\n■納期:'+ day; // メール送信 GmailApp.sendEmail(sendMailAddress,subject + task,message); } |
if関数は、括弧内の条件式を満たす場合は、中括弧内の処理を行います。
今回は、タスクの期限が今日より過去でステータスが完了となっていないタスクをメールとしてリマインドします。
そのため条件は、以下の様になります。
1 |
(formatDate >= day && status !== "完了") |
条件を満たした場合は、タスク内容をメール本文としてGmailApp.sendEmail関数でメールを送信します。
送信した際のメールのタイトルと本文は以下のようになります。
【期限アラート】本日期限:<タスク名(C列)の内容を記載>本文
■タスク名:<タスク名(C列)の内容を記載>
■タスク内容:<タスク内容(D列)の内容を記載>
■状況:<ステータス(B列)の内容を記載>
■期限:<期限(A列)の内容を記載>
これでスクリプトの作成は完了です。
保存ボタンをおしてスクリプトを保存しておきましょう。
動作確認
スクリプトが完成したので実際に動かして見ましょう。
タスク登録用スプレッドシートにタスクを記入しておきます。
画像のサンプルデータで2023年11月19日に実施した場合、2行目と3行目のタスクがリマインドされる想定です。
Apps Scriptにてスクリプト実行ボタンをクリック。
リマインドメールが送られれば成功です。
「承認が必要です」と出てきたら承認していきましょう。
エラー解消方法はこちら。
うまく動かない!トラブルシューティング集
実装中に発生するトラブルと確認方法も合わせてまとめました。
うまく実装できないという場合に参考にしてください。
メールが送信されない
メールが送信されない場合考えられる原因は、主に以下の3点。
- メールアドレスが誤っている
設定情報エリアのメールアドレスに誤りがある可能性があります。
再度確認してみましょう。
- for関数、if関数の条件が誤っている
繰り返し処理で利用しているfor関数や判定処理で利用しているif関数は条件式(括弧の中の記述)が少しでも異なると正常に動作しません。
サンプルコードを確認して不等号や変数名などに誤りがないか確認してみましょう。
- GmailApp.sendEmail関数の記述に誤りがある
メール送信の処理は、GmailApp.sendEmail関数にて行っています。
引数などに誤りがないか確認してみましょう。
完了しているタスクもリマインドメールが送られる
ステータスが完了となっていてもメールが送られる場合は、if関数の記述に誤りがある可能性があります。
条件式を確認してみましょう。
Googleカレンダーへスケジュール登録する機能も実装してみよう!
タスク登録シートに登録したタスクをGoogleカレンダーにスケジュールしてみましょう。
リマインドとスケジュール登録をあわせることでより業務効率を高めることができるでしょう。
実装方法については、以下の記事を参考にしてみてください。
まとめ
今回は、タスクのリマインドメール通知させる方法としてスプレッドシートとGmailをGASを用いて連携する方法をご紹介しました。
本記事の内容をまとめると以下。
GASを用いてGoogleサービスを簡単に連携させて業務の効率化が図れます。
本記事を参考にしてあなたのタスク管理を円滑に行えるようにしましょう。