簡単なTODOリストのシートを作る。
シート「TODOリスト」の完了セルを上からなぞっていき、「未完了」で「期日が過ぎている」ものをピックアップし、表にしてメールを送る。
remind.gs
//スプレッドシートの未消化タスクをメールする
function remind() {
var date = new Date();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('TODOリスト');
var data = sheet.getDataRange().getValues();
var header = new Array();
var table = new Array();
var footer = new Array();
var taskNum = 0;
header.push("<head>");
header.push('<style type="text/css">td{padding:3px;border:1px #555555 solid;border-collapse:collapse;font-size:13px}</style>');
header.push("</head>");
header.push("<body>");
table.push("<table>");
table.push("<tr><td>期限</td><td>タスク</td><td>担当者</td><td>備考</td></tr>");
for(var i = 0; i < data.length; i++){
//完了しているかタスクが空欄の場合はスキップ
if(data[i][2] == true || data[i][4].length == 0){
continue;
}
data[i][3] = new Date(data[i][3]);
//タスクが未完了で日付が過ぎている場合
if(data[i][3] < date){
taskNum++;
table.push("<tr><td>" + Utilities.formatDate(data[i][3], "JST","M/d") + "</td><td>" + data[i][4] + "</td><td>" + data[i][5] + "</td><td>" + data[i][6] + "</td></tr>");
}
}
table.push("</table>");
footer.push("</body>");
header.push(taskNum + "件の未消化タスクがあります。");
MailApp.sendEmail(
["hogehoge@gmail.com"],
"期限切れ未消化TODOリスト",
'HTMLメール用',
{
htmlBody:header.join("\n") + table.join("\n") + footer.join("\n")
}
)
}
上記を日次のトリガーとして実行するように設定しておわり。
リマインドされるものの、未完了のタスクが積まれていくだけになりあまり効果はなかった。