ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

Microsoft Teams のチャネルに添付されているファイルのフルパスをPower Automateで取得する(概要編)

※ 2022/4/21 追記:改良版のフローを公開しました。
wataruf.hatenablog.com

※ 2022/4/3 追記:解説編を投稿しました。
wataruf.hatenablog.com

主旨

Microsoft Teams チャネルの会話タブには下図の赤枠のように会話にファイルを添付することができます。このファイルのフルパスをワンタッチで取得してくれるフローを作りました。


背景・経緯

会話タブに複数ファイルを添付するのは、提示するひとにも受け取るひとにも手間がかかる

チャネル上でファイルの共有を行う際には、ファイルタブ上にファイルをアップロードして、会話タブでそのファイルを添付するのが一般的なやりかたかと思います。

会話に添付されたファイルがひとつの場合は、ブラウザでファイルを直接開いて参照したり、ファイルをダウンロードしてPCのローカル上で開いたりしてもそこまで手間はかかりません。ですが、同時に複数のファイルを提示される場合(もしくは提示する場合)はひとつひとつ添付ファイルを開いたりダウンロードすることに時間も手間もかかります。

だから、ファイルを格納しているフォルダを直接開きたい

そんなケースでは、ファイルの保存先フォルダを直接開いてファイルを参照したり、フォルダごとPCにダウンロードしたくなることがしばしばあります。

添付ファイルのリンクからはフォルダのパスがとれない

添付ファイルの「・・・」には「リンクのコピー」というメニューがあります。このメニューは一見、ファイルのフルパスが取れそうに思えます。なので、「これで取得したフルパスをもとに、親フォルダのパスを開いてみるか(・ω・)」と考えたことがあるのは私だけではないと思います。

ですが、「リンクのコピー」で取得できるのはファイルのフルパスではありません。
このパスはファイルの直接リンクではありますが、パスの中身はランダム(と思われる)文字列で構成されています。そのため、このリンクからは親フォルダのパスを取得することはできません。

ファイルを提示する側のひとが、会話にファイルのフルパスを記載しようとする場合もあるかと思います。
ですが、「ファイル」タブを開いてもフルパスを取得できそうな箇所がありません。「リンクのコピー」というメニューが所々にありますが、ここから取得できるのは先ほどと同じく親のフォルダパスを含まない直接リンクです。

フローの使いかた

このフローは「選択したメッセージの場合」トリガーを使います。そのため、取得対象の単位は投稿(親スレッド、または返信)です。まずは、取得対象の投稿を決めます。下図の場合は赤枠の2つが取得対象の選択肢となります。

この例では、返信のほうを取得対象としています。
「・・・」>「その他の操作」>「添付ファイルのフルパスを確認」を選択します。

数秒程待つとフローボットからチャットが届きます。チャット本文で添付ファイルのフルパスを教えてくれます。

「会話を開く」のリンクをクリックすると、対象の投稿に遷移します。

フローの全体図

フローの流れは以下の通りです。

苦労した点

Twitterのほうで記載しましたが、今回やりかたを思いつくのに苦労したのは以下の2点です。

  • プレミアムコネクタを使わずに返信を取得したい(Graph APIなら返信が取得できるがプレミアムコネクタであるHTTPアクションを使う必要がある)
  • 「チャネル内のスレッドを一覧取得」アクションは最新20件より昔の投稿に対して実行できないという制約がある。そのため、制約の無い何か別の方法を使う。


2022/4/3 追記:解説編を投稿しました。

wataruf.hatenablog.com

以上です。