GOODEGG JP

『いい感じ!』(good egg!)なモノやコトをご紹介。
全力で。たまに。たぶん。

メールを送ってGoogle Tasksにタスクを登録する

remember the milkから、Google Tasks(GmailのToDoリスト)に乗り換えました。

Google Tasksを使ってみて一番不満に感じるのは、「メールからのタスク登録が不便なこと」

これ!と言う解決方法が見つからなかったのと、雪で予定が潰れたので解決方法をちょっと作ってみました。導入の手順が多いので面倒かと思いますが、同じ不満を持つ方の参考になれば幸いです。

remember the milkからGoogle Tasksに乗り換えてみました

乗り換えた理由はこんな感じ。

  • (もう2月ですが)年も明けたし新しいノート的な気分で。しかも、無料。
  • 個々の"タスク"は、最終的にGoogleカレンダーで"予定"にすることが多い。Googleカレンダーと仲の良いGoogle Tasksが良いんじゃないか。
  • "タスク"となる依頼がメールで飛んでくることが多い。Gmailと仲の良いGoogle Tasksが良いんじゃないか。
  • RTMに預けるときは固有名詞は全て隠語にしている。Google Apps for Businessのアカウントで扱うタスクは、Google Tasksで管理した方が気兼ねがないんじゃないか。

そんなこんなでGoogle Tasks使ってみると、remember the milkのようなスマートな検索ができなかったり、期限の登録が面倒と感じることがあったりと、多少の不満はあるものの、今の仕事の仕方なら十分使えると思いましたが...

メールを簡単にタスク登録できると思ってたのに...

使いにくいなぁと思ったのは、

  • 「専用のメールアドレスにメールを送れば、タスクの登録ができる」的な機能がない。
  • Gmailの「ToDoリストに追加」機能がシンプル過ぎる。

の2点。

ちなみに「ToDoリストに追加」の機能は簡単に使えます。
メールをタスクに登録したいと思ったら[その他]ー[Todoリストに追加]と操作するだけ。

しかし、操作がシンプルな分、機能もシンプル。登録先のリストは強制的にデフォルトのリストになる、期限はあとから登録しなくちゃいけない。さらにiPhone版のGmailアプリには[ToDoリストに追加]がないなど不満が膨らんできました。

作ってみました

文句を言っていてもしょうがないので「指定したラベルが付いているメールを、Googleタスクの指定したリストへ自動登録。ついでに本文中に期限が指定されていたら期限を登録する。」って言うのを作ってみました。

Gmailのフィルター機能を使えば、[Googleアカウント名]+todo@gmail.comに届いたメールを、自動でGoogleタスクに登録すると言う使い方もできます。

今回使ったのはGoogle Apps Script。GoogleドライブのExcel VBA(≒マクロ)的存在です。APIを経由して各種Googleサービスとの連携ができるのが便利。

また、Excelマクロはパソコン上で動作しますが、Google Apps Scriptはサーバー上で動作します。パソコンを起動していなくても定期実行が行えるのもGoodです。

ちなみにExcel VBAはVisual Basic for Applicationsで書きますが、Google Apps ScriptはJavaScriptで書きます。

導入方法

導入方法と使い方をご案内。同じ不満を持つ方の参考になれば幸いです。ちょっと手順が多いですが...

1.スクリプトの新規作成

いままでGoogle Apps Scriptを使ったことがないと言う方は、「Google Apps Script」(http://www.google.com/script/start/)にアクセスして、[Start Scripting]をクリックしてください。

使ったことのある方は、Googleドライブにアクセスして[作成]ー[スクリプト]を選択します。

続けて[空のプロジェクト]を選びましょう。

2.ソースコードのコピーとプロジェクトの保存

次に以下のソースコードをコピーして、1の手順で開いた[コード.gs]に貼り付けます。
[コード.gs]にある"function myFunction() {}"は不要です。

上手くコピーできない場合は、labeledGmailtoGTask.gsをダウンロードし、エディタで開いてコピー&ペーストしてください。

ソースコードを貼り付けたら、プロジェクトに名前を付けて保存します。名前はなんでも構いません。

3.Tasks APIの有効化

このスクリプトでは、Google TasksにアクセスするためにTasks APIを使います。APIを使うには準備が必要です。まずは[リソース]ー[Googleの拡張サービス]と進み、

Tasks APIを「ON」に、さらに「Googleデベロッパーコンソール」へ進みます。

ここでもTasks APIを「ON」にしましょう。

4.ラベルやフィルターの設定

次にスクリプトで処理するラベルとリストを設定します。

ここでは「MailTodo」と言うラベルが付いたメールを、「ListTodo」と言うリストにタスク登録したいとして説明します。

4-1 ラベルの設定

Gmailの[設定]-[ラベル]で[新しいラベルを作成]から「MailTodo」と言うラベルを作ります。

4-2 リストの設定

[ToDoリスト]を開いて、

[リストの名前を変更]もしくは[新しいリスト]から「ListTodo」と言うラベルを作りましょう。

4-3 フィルターの設定

(googleアカウント)+todo@gmail.comに届いたメールに、「MailTodo」と言うラベルを付けるようにフィルター(自動振り分け)を作成しましょう。

まずはGmailの検索窓にto:(googleアカウント名+todo@gmail.com)と入力して、[この検索条件でフィルタを作成]を選択します。

フィルタの設定では[ラベルを付ける]で[MailTodo]を選びます。

フィルターが設定できていることを確認するために、メールを一通送ってみましょう。送ったメールに[MailTodo]と言うラベルが付いていればOKです。

注意

このフィルターでは誰から送られたメールでも[MailTodo]のラベルが付くことになります。(=誰でもGoogle Taskにタスクを登録できることになってしまいます。)これが不都合なら、TOの指定に加えて、FROMに自分のアドレス(やタスク登録のために使うアドレス)を設定するのが良いでしょう。

4-4 スクリプトの設定

あとちょっとです...

書き替えるのは18行目のINITIAL_SETTING。labelnameにGmailのラベル名を、listnameにGoogle Taskのリスト名を指定します。

このように複数指定することも可能です。

なお、このスクリプトではGoogle Tasksにタスク登録したら、そのメールからラベルを削除します。削除するのはINITIAL_SETTINGSで指定したラベルだけです。

上手く行かない時は

  • [表示]ー[ログ]からログを確認してください。
  • すべての設定を見直すとともに、ラベルの付いたメールがあるかどうかも確認してください。

6.トリガーの設定

ここまで上手くいったら定期実行の設定をしましょう。[リソース]ー[現在のプロジェクトのトリガー]と進んで、

[...今すぐ追加...]をクリックし、[labeledGmailtoGTask][時間主導型][分タイマー][10分ごと]を選択して[保存]しましょう。

7.使い方のヒント

・タスクのタイトルは、スレッドの最初のメッセージに書かれた件名を取得しています。なので、Re:やFwd:は無視されます。

・メールの本文は、タスクのメモとして保存します。ただし、2KBを超える場合は切り捨てられます。

・メールの本文中に@で日付を指定すると期限の設定ができます。指定できる形式は、YYYY/MM/DD、MM/DD(今年の扱いになります)と、223行目付近のキーワードとなります。

ちなみに「今週中」は金曜日(土日の場合は過去の指定となります)、「今週末」は日曜日となります。

このようにキーワード含めこのスクリプトは、私の生活に合わせて書いています。必要があれば書き替えてください。

stringはキーワード、addvalueは基準日(メールの送信日時)から何日加算するかです。

おまけ。期限切れ、今日、3日以内のタスクを毎日メールする方法。

今週末は雪遊び&雪かきくらいしかすることがなかったので、もう一本。

こちらは「期限切れ、今日、3日以内のタスクをまとめてメールする」と言うスクリプトです。

導入方法は基本的には先程の手順と一緒です。ソースコードは以下の通り。
gtaskReporter.gs

事前設定

12行目の送信先メールアドレスを指定してください。

[code lang="js" firstline="12"]
var MAILTO = 'taku0843@gmail.com';
[/code]

トリガーの設定

毎日決まった時間にメールを受け取りたい時は、[gtaskReporter][時間主導型][日タイマー][希望の時間帯]を指定します。

使い方のヒント

土日と国民の祝日(2014年及び2015年のみ設定)は、メールは送らないようにしています。夏休みを追加したい、土日も受け取りたいなどは、isHoliday関数の戻り値がtrueにならないように調整してください。

(最後に)スクリーンショットについて

この記事のスクリーンショットで使っているGmailアドレスは常時利用していません。そちらにお問い合わせ頂いてもお答えできませんのでご了承ください。

Return Top