2013年10月10日木曜日

GoogleSpreadSheetでToDoタスクを作り、期限が近づいたらメールで通知する。

GoogleSpreadSheetは非常に便利だ。

Excelと同じように表計算やマクロ機能(Google Apps Script)を持っているが
何と言っても一番はスケジューラ機能だ。
スプレッドシートの内容を、指定した時間にメールで通知するなんてことも可能。
これはExcelだけではなかなかできないと思う。

という訳で自分の仕事を円滑に進められるようにするためにということで、
GoogleSpreadSheetを多様しているのだが、中でもToDoリストとしての活用は
いろいろな方でも使えるものだと思うのでサンプルコードを書いてみた。

コードはGitHubにアップしているのでそれを参考にしていただければ思う。
https://github.com/maar4569/notifyToDoWithGAS

そのサンプルを元にToDoアプリを作ってみようと思う。

このToDoアプリができること。
・利用者はスプレッドシートにToDoを書く。
・ToDoの締め切り日が近づいてくるとメールで通知してくれる。
 N日前ですよとか、締め切り当日ですよとか、過ぎてますよとか。

作成手順
1.GitHubからコードをダウンロードしておく。
2.まずはGoogleドライブ上に新規のスプレッドシート「ToDoList」を作成する。
  2-1.シート名を「ToDo」に変更する。
  2-2.ToDoListに1行目のカラムに「task」「deadline」「notes」「deleted」と記述する。
 task やるべきことを書いておく。
 deadline 期日を書く。(yyyy/mm/dd形式で)
 notes 補足事項があれば書いておく。
 deleted メールで通知する必要が無くなった場合「1」と書いておくと通知しなくなる。
     つまりもう済んだタスクは1と書いておく。書かないとずっとメールで通知して
     くることになる。

  2-3.2行名以降にはやるべきtaskを書く。


3.ダウンロードしたコードを挿入する。
  3-1.空のプロジェクトを選択。 

  3-2.[ファイル]-[新規作成]-[スクリプトファイル]を選択。

  3-3.main.gsというファイル名に変更し、ダウンロードしたコードをコピペする。

4.関数 notifyDoDoを探し、変数に設定する。(赤い字のところを変更する)
function notifyToDo(){
  //Spread Sheet Config
  var sheetName      = "ToDo";  <-シート名を設定する。手順2.1でToDoにしたのでここは編集しなくてもよい。
  var spreadSheetKey = "your spread sheet Key"; <-スプレッドシートのキーを設定する
スプレッドシートを開いたときのURLで下のアドレスバーの黒塗りの箇所に該当する文字列を登録する。

  //mail config
  var subject        = "[MyToDoリストからの通知]ステータスのお知らせ";  <-メールのタイトルを設定する
  var recipients     = new Array("mailaddress"); <-メールアドレスを設定する。複数ある場合は、カンマ区切りで設定する。ex)aaa@x.com,bbb@x.com
  //notification config
  var threshold      = 4;   <-期限の4日間になったら通知する

5.関数notifyToDoを実行する。

6.SpreadSheet、Gmailの利用承認を求められる。
  6-1.「続行」をクリックする。


  6-2.「承認する」をクリックする。
   これによってこのアプリがSpreadSheetへのアクセスとメール送信が許可される。


7.トリガーを設定する。
 これは定期的にToDoの状況をメールで通知するようにするためである。

  7-1.「リソース」から「現在のプロジェクトのトリガー」を選択。

  7-2.「トリガーが設定されていません。・・・」をクリックする。

  7-3.トリガーを設定する。
          実行は、notifyTodo関数
          イベントは、時間主導型、日タイマー、午後4時から5時。
          これで毎日午後4〜5時の間にタスクのステータスがメールで通知される。



8.トリガーで設定した時間になるとメールで通知される。(めでたしめでたし)


 


0 件のコメント:

コメントを投稿