どうもmrです。
この記事の目標はGoogle Apps Script(GAS)を使って、
GoogleスプレッドシートとGmailを連携させることです。
とてもシンプルな内容となっていますので、GAS?なにそれ?それで何ができるの?くらいの人をターゲットにしています。
作りたいもの
進捗管理表で期限が過ぎてしまっているものをGmailで通知したい
必要なもの
・Googleアカウント
スプレッドシートの作成に必要なため
やること
- スプレッドシートに進捗管理表を作る
- GASを書く
- Gmailで結果を確認する
- 定期実行する
この三つを行っていきます。
1. スプレッドシートに進捗管理表を作る
進捗管理表には「No」「進捗状態」「タイトル」「詳細」「期限」を入れます。
進捗状態には「データの入力規則」を用いて「未着手」「実行中」「完了」「保留」の4つを選択できるようにします。
期限は結果が確認しやすいように、今日の日付から前後10日間くらいを入れておきます。
次に本日の日付をスプレッドシートに記入します。
ですが、3/26をそのまま直打ちしてしまうと、日付が変わるたびに変更しなくてはいけないので、
TODAY関数を使用します。
スプレッドシートのセルG1に本日と、
セルG2に =TODAY() と入力してください。
すると自動的に本日の下に今日の日付が入っているかと思います。
これでタスクの3分の1くらいが期限が切れてしまった進捗管理表ができあがりました。
次にこの進捗管理表の通知を飛ばすメールリストを作ります。
今回は右側の余白にこのようなメールリストの項目を作って、飛ばすようにします。
画像にも書いてある通り、自身が使っているメールアドレスを入力してください。
この後にこのメールアドレスに結果を送信するので、人のメールアドレスを入力すると迷惑になってしまいます。
本番利用する際は良いとは思いますが、まだテスト段階なので、自身のメールアドレスのみにしておきましょう。
2. GASの作成
スプレッドシートのメニューの「拡張機能」から「Apps Script」を選択してください。
このような画面になると思います。
次に以下のプログラムをコピペしてください。
セル番号がずれてしまっている方は気を付けてください。
今回はプログラムについての詳しい解説はしないので、コメントを参照してください。
function myFunction() {
// スプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
// 今日の日付を取得
var today = ss.getRange("G2").getValue();
// タスクリストを取得
var tasks = ss.getRange("A2:E23").getValues();
// Gmail通知用の文
var log = "";
// 期限切れのタスクを検索する
for(var i = 0; i < tasks.length; i++) {
if(today > tasks[i][4]) {
// ログに 【期限切れ】No タイトル (改行)を追加する
log +="【期限切れ】 " + tasks[i][0] + " " + tasks[i][2] + "\n";
}
}
// ログが空のままの場合は期限切れ無し
if(log =="") {
log = "期限切れはありません。";
}
// メールリストを取得
var mailList = ss.getRange("I2:I23").getValues();
for(var i = 0; i < mailList.length; i++) {
// アドレスの部分が空でなければそこに書かれているアドレスにメールを送信する
if(mailList[i][0] != "") {
MailApp.sendEmail(mailList[i][0], "本日の進捗状況", log);
}
}
}
コピペできましたら、保存ボタンを押して実行を押すと無事にメールリストのアドレスへメールが送信されます。
3. Gmailで結果を確認する
自分自身のメールアドレスを設定すれば自分からメールが届きます。
4. 定期実行する
タスクの期限が切れてしまっているのを気づけないとよくないので、
次にこの処理を定期実行してみましょう。
GASのスクリプトはトリガーというところから定期実行できます。
毎日お知らせするのもいいですが、それだとうるさすぎるかもしれないので、今回は1週間ごとに通知するようにします。
右下の「トリガーの追加ボタン」からトリガー設定画面を開いて、このように設定してみてください。
これで毎週月曜日の午前9時すぎごろに通知されるようになります。
以上で、とてもシンプルな進捗管理表が作成できると思います。
最後に
シートごとに通知する頻度を変えた表を作ってみたり、
もっと見やすいようにスプレッドシートのデザインを変えてみたりするともっと有意義なものになると思うので、
ぜひいろいろいじってみてください!
分からないことは気軽にコメントしてください!
TwitterのDMも開放してるので、他の人に見られたくない人はそちらから質問していただいても構いません!