Microsoft To-Doが発表される前から、VSTS/TFSに登録されたタスクをOutlookにも反映させたいと思っていました。実はそういうアドオンは海外には結構あります。MSDNの特典にもあるSmartOutlook4TFSなんかがそうですね。
でも、せっかくオンラインのサービスでRESTのAPIがあるから何とかしたいと思っていました。Microsoft Flowを使えばコーディングレスで連携できることに気づいてやってみたら、できたのですがいくつか課題も分かりました。
とりあえずタスクが連携するのは便利です。使う方の参考にどうぞ。
Flowのサインアップはこちらから。MSアカウントでもOffice 365アカウントでもどちらでもいいです。連携するoutlookやVSTSのアカウント種別で判断すればいいでしょう。私はMSアカウントで作ってみました。
タスクでVisual Studioを検索します。When a work item is assignedを選択します。
アカウントはMSアカウントであれば自動的に認証されているVSTSのアカウントが出てきます。プロジェクト名を選択して、"assigned to"を選ぶと、「必要なパラメータがー」云々、と出てきます。
これ、実は一つ下のTeam to lookup member fromを「先に」選ばないといけないんですね。必須項目ではないのに選ばないと必須項目が選べないのは注意してください。
ここではプロジェクトの中にあるチームを選びます。チームを選ぶことでチーム内のアカウントを列挙するという動作です。
詳細オプションを選択すると、もうちょっと広がります。Area PathやIterationは大規模な場合便利かもしれませんが、ここではTypeに「タスク」のみ指定します。プロダクトバックログやフィーチャーをもらってもToDoで管理できるものでもないですしね。
Microsoft ToDoの実態はOutlookのタスクを見せているだけです。なので、アクションでOutlook Tasksを選びます。
次はVSTSのタスクの内容をOutlook側に転記します。
で、VSTS側にタスクを登録すると、こんな風にちゃんと連携しますね。
しめしめ…と思って、ToDoを見ると…あれ?1601/1/1が期限?
実はこれ、OutlookのタスクのDue Date(締め切り)やStart Date(開始日)に日付が入っていないからなんですね。そして、この日付にふさわしい日付はVSTSからは出てこないのです(残念)。とはいえ、1601/1/1ってのはちょっとないので、こんな風にcreated dateを代わりに入れてみました。
もちろんVSTS側としては管理できる項目ではあるのですが、標準のプロセステンプレートの入力項目としては出てきません。
VSTSのプロセステンプレートをカスタマイズするか、入力フォームで明示的に入力項目として出すことはできます。
以前のアドベントカレンダーで書いた時よりさらに簡単になっています。
これはタスクがアサインされたときに連携しています。できれば次はToDoでクローズしたら、VSTS側もクローズさせたいものです。
VSTSのタスクには固有のURIがあるので、それをタスクのdescriptionなどに書いておいて、切り出し→FlowでREST API呼び出しという手順になるかと思います(できたら紹介します)。
では楽しいToDo & VSTSライフを!