Googleスプレッドシートを使って日々のタスクをメールでお知らせ

2019/08/26

GAS コピペで動くプログラム 個人向けプログラミング 作業時間10分 初心者向け 平易なプログラム

t f B! P L
【プログラミング初心者向けに、コピペで使えるプログラムです】

今回のプログラムは、
エクセルで管理しているタスク一覧を自分のメールアドレス宛に送付する
です。

なぜ自前で作ったかと言うと、
パソコン、ノート、タブレットなどどの端末からでもタスク管理ができ、機種やツールに依存しない仕組みにしたかったから。
当初iphoneアプリなどを利用していましたが、アプリのバグや、提供終了による他アプリの選定・移行、インターネットに繋がらないと動作しないなど、思いのほか手間がかかり。

結局はエクセルやテキストでの管理に落ち着いています。

とはいえ、アラートする仕組みはやっぱり欲しい!!と思い、今回メール通知するプログラムを作りました。

育児が始まってからは、作業時間は数分単位、作業中に手を止めることが当たり前となり、今日の予定はー、と一々パソコンを立ち上げて、エクセルを起動してなんて時間が取れません。。。

特に新生児はほぼベビーベッドから離れられないため、タブレットやスマホをチェックするので精一杯。

日々の作業をメールでチェックし、進捗やメモを返信することで作業漏れを防いでいます。
※育児中のルーチンや、使用しているアプリについては別途掲載します※

使用するのは、Googleスプレッドシート+Google Apps Script+Gmailです。
(Googleアカウントを持っていれば無料で利用できます。)
Googleスプレッドシートを選んだ理由は、自分の端末からEXCELでメール配信するよりも、ハードルが低く、動作確認が簡単なためです。
自端末からメール配信するプログラムを作るためには、メール配信の設定やうまくいかないときの切り分けをすべて自分で行わないといけません。
今回Googleが提供する仕組みを利用するため、環境依存について気にする必要がありません。
クラウドの利点ですね。

プログラムの動作は、

スプレッドシート1行の内容を、1通のメールで送信。
今日は1行目、明日は2行目と毎日メール本文を入れ替えて送付します。

【手順】作業時間:コピペで10分程度
①Googleスプレッドシートにタスク一覧を作成
②Google Apps Scriptでメール配信プログラムを作成
③②のプログラムをトリガーに登録

①Googleスプレッドシートにタスク一覧を作成
下記表をコピペしてスプレッドシートを作成します。
1行目はタイトル、2行目からメールに記載する内容を書きます。
各項目は以下のように使っています。

№:件数

件名:メールのタイトル

タスク1~3:タスク内容

コメント:タスクの詳細

メッセージ:メモ書きです。

送信履歴:メール送信した日付

一覧の行数は何行増えてもかまいません。上から順にメールします。

②Google Apps Scriptでメール配信プログラムを作成
スプレッドシートのメニューからツール→スクリプトエディタをクリック
コード.gsタブのエディタ内に、既存のコード(function myFunction() {から始まるコード)はすべて消し、以下コードを貼り付けます。

---------------------------------------------------

function TaskMailMain(){

var MySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
var RowSheet=MySheet.getDataRange().getLastRow(); //シートの最終行を取得
var StrFrom="from@gmail.com"; //差出メールアドレス
var StrSender="taskmail"; //差出人名
var StrTo="to@gmail.com"; //送付するアドレス

//タスク一覧の一行目から順に送信履歴をチェックし、送信履歴が空の行をメールで送付
for(var n=2;n<=RowSheet;n++){ //タスク一覧の件数分繰り返す
if (MySheet.getRange(n,9).getValue()===""){ //送信履歴が空欄の場合メールを送付する
var StrSubject=MySheet.getRange(n,3).getValue(); //タイトルを取得
var StrTask1=MySheet.getRange(n,4).getValue(); //タスク1を取得
var StrTask2=MySheet.getRange(n,5).getValue(); //タスク2を取得
var StrTask3=MySheet.getRange(n,6).getValue(); //タスク3を取得
var StrCom=MySheet.getRange(n,7).getValue(); //コメントを取得
var StrMsg=MySheet.getRange(n,8).getValue(); //メッセージを取得

var StrBody=StrTask1+'\n'+StrTask2+'\n'+StrTask3+'\n'+StrCom+'\n\n'+StrMsg; //本文結合

//メールの送信
GmailApp.sendEmail(
StrTo, //toアドレス
StrSubject, //表題
StrBody, //本文
{
from: StrFrom, //fromアドレス
name: StrSender //差出人
}
);

n=n+RowSheet; //for文を抜ける
MySheet.getRange(n,9).setValue(new Date); //今回送った日付を入れる

};

}
}

---------------------------------------------------
貼り付けたコードの内、下記3か所""の中身を、利用環境に合わせて変更してください。

var StrFrom="from@gmail.com"; //差出メールアドレス

var StrSender="taskmail"; //差出人名

var StrTo="to@gmail.com"; //送付するアドレス

▶の実行ボタンをクリックすると、メールが配信されます。

※メール配信時、初回はGoogleからアクセス許可をポップアップが表示されますので、許可してください※

③②のプログラムをトリガーに登録
メニューの編集→現在のプロジェクトのトリガーをクリック
右下のトリガーを追加ボタンをクリック

イベントのソースを選択:時間主導型
時間ベースのトリガーのタイプを選択:日付ベースのタイマー
時刻を選択:午前0時~1時 ※お好きな時間を選択してください※
→保存

以上で完了です。

実際に届くメールはこんな感じです。


個人利用を想定し、平易なコード、各行コメントを入れていますので、自分用にカスタマイズしてご利用ください。
カスタマイズしてこんな感じのメールを毎朝届けています。




参考にしたサイト
Gmailを使ってステップメールをかんたんに発行する方法

QooQ