はじめに
本記事は私が募集しているマシュマロにきていた質問に対する回答・解説を記載します。
今回、回答する質問は以下のようなPlanner に関する質問です。
もし、私に他に聞いてみたいことがあればこちらにてお願いします!
Planner の情報を取得する
タスクのタイトルを取得する
質問者さんは解決しているようですが、Power Automate でPlanner のコネクタをこれからつかってみようかな?と考えている方向けに説明します。
まず、Power Automate には現在(2020/8/30)、以下のようなPlanner のコネクタが存在します。
トリガー
アクション
各コネクタの詳しい説明は、コネクタ リファレンス - Plannerをご確認ください。
それでは、本題です。
結論からいいますと、タスクのタイトルを「タスクの一覧を表示します」を利用します。
例えば以下のようなタスクが作成されていたとします。
こちらのタスクのタイトル、「確認用」をPower Automate 上で取得してみます。
Power Automate にて「タスクの一覧を表示します」アクションを追加し、取得したいタスクが属している「グループID」、「プランID」を選択します。
こちらのアクションを実行すると、実行履歴の出力欄にて以下のような結果を確認できるかと思います。
* 実行結果はJSON 形式で出力されます。
* 下記では抜粋して記載しています。
"title": "確認用"
上記アクションで取得した結果をTeams やOutlook などで送りたい場合は、下記のように「値 タイトル」を選択します。
以上で、タスクのタイトルを取得することができました!
ただしこのままでは、対象プランのタスクタイトルが全て対象となっているので注意してください。
タスクのメモを取得する
タスクのメモを取得する際は、「タスクの詳細を取得する」を利用します。
アクションを追加したら、取得したいタスクのタスクID を選択、もしくは入力します。
こちらのアクションを実行すると、実行結果で以下のように確認できます。
Teams やOutlook などで送りたい場合は、「説明」を選択します。
以上がタスクのメモを取得する方法です。
なおおまけ的な説明ですが、「タスクを取得する」アクションでは、対象のタスクにメモが存在するかどうかを確認することができます。
これは「説明があります」という実行結果を確認することで確認が可能です。
説明がある場合はtrue、なければfalse を返します。
タスクのコメントを取得する
最後にタスクのコメントの取得方法です。
Planner のタスクにつけたコメントはPlanner 上では以下のように確認できるかと思います。
これらのコメントの取得ですが、Planner のコネクタでは取得できません。
では、どうやって取得するの?というと「Office 365 Groups Mail」コネクタを利用します。
Planner につけたコメントですが、対象のタスクが属するグループのメールグループにメールが送られます。
こちらに送られたメールを取得することによってコメントを取得してやろうという魂胆です。
対象グループのメール一覧を取得するには「List the conversations of a group」アクションを利用します。
「Group ID」には取得対象のグループID を選択、もしくは入力します。
これにより、以下のような結果を取得することができます。
"topic": "タスク \"確認用\" のコメント", "preview": "改行を含むコメント\r\nだよ\r\nこれらは、プラン Test のタスク 確認用 についてのコメントです。\r\nMicrosoft Planner に返信 するか、またはこのメールに返信して、タスクのコメントを追加します。\r\n________________________________\r\nFrom: koruneコルネ <korune@korune.onmicrosoft.com>\r\nSent: Sunday, August 23, 2020 2:56:14 AM\r\nTo: koruneコルネ <korune"
Power Automate 上でこれらを使用する場合は、「Conversation topic」と「Preview」を利用します。
ただこの方法では、実行結果をみてもらえばわかるように、余計な文章まで取れてしまっています。
なので、split() 関数などで取得結果を整形してあげる必要があります。
また、グループに届いたメール全てが取得されますので、件名(topic)にてフィルターもかけてあげる必要があります。
この場合、「タスク "[タスクタイトル]" のコメント」形式の件名でメールが送られてくるはずなので、これらの情報をもとにフィルター処理を行ってください。
ただ、件名でフィルター処理するの面倒くさいですよね。
それにすべてのメールを取得すると、処理に時間がかかってしまいます。
なので、コメントを取得したいタスクが予めわかっている場合は、「Get a group conversation」を利用しましょう。
「Group ID」には先ほど同様、対象のグループのID を、「Conversation ID」には先ほどのアクションで取得した「Conversation ID」を入力します。
Planner のコメントはOutlook には新規ではなく、返信される形で送られてくるので、「Conversation ID」は固定となります。
なので、初回実行時に「Conversation ID」を取得しておき、その値を設定してあげればフィルター処理などは不要になりますね。
ただ、これまでの説明をみていただいてわかるようにPlanner のコメントを取得するというのは少々面倒です...
試してみるというのはいいかもしれませんが、実際にこのやり方を用いて運用するかどうかは今後の保守性や実装にかかる時間を考慮して、慎重に考えたほうが良いと思います。
コメント取得方法(2020/10/04 追記)
-----------------2020/10/04(日) 追記-----------------
simo-k さんよりコメントにてアドバイスをいただきました。
以下方法を実践することにより、Planner のタスク名が変更になっても取得でき、また初回に「Conversation ID」を取得しなくてもよくなるようです。
1.conversationThreadIdの取得 {outputs('タスクを取得する')?['body/conversationThreadId']} 2.conversationThreadIdの判定 length>0でコメント有り。 3.スレッドの取得 "Get a conversation thread"で、別で求めたTeamIDと上記conversationThreadIdを利用。 ※この手順でやれば、タスク件名を途中へ変更されたり、同一タスク名が存在していても識別可能。
simo-k さん、ありがとうございます!
では早速やり方です。
まずは「タスクを取得する」を選択します。
続いて、条件にてコメントが存在するかを判定します。
以下の式の値が0より大きかったらコメントがある。と判断します。
length(outputs('タスクを取得する')?['body/conversationThreadId'])
ここで1点注意です!
outputs('タスクを取得する')?['body/conversationThreadId']
ですが、動的なコンテンツを探しても対応する値は見つからないかと思います。
ですので、上記式を直接記載することで、「Conversation ID」を取得しましょう。
あとは以前紹介したやり方と同じですね。
「Get a conversation thread」にて「Group ID」と「Thread ID」を設定してコメントを取得します。
これでタスク名が変更になってもコメントを取得できるほか、初回に「Conversation ID」を取得する必要がなくなりましたね。