SharePointへの画像アップロードをTeamsにお知らせする

TeamsにSharePointの画像を投稿すると、リンクは貼られるんだけど、サムネイル的なものが表示されないんですよね...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/51716ed8-3134-e372-8397-0c60fec8d42d.png)
以前も[似たような投稿](https://qiita.com/h-nagao/items/bcd3f305d5abd1b11208)をしたのですが、今回はSharePointのドキュメントライブラリを対象に、ファイルがアップロードされたら、画像ファイルのときだけTeamsに通知するようなFlowをご紹介します。

なかなか良い感じにできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/b816f88e-7260-6bae-3c56-7fee8f8144a1.png)


# 全体像
今回も比較的短いFlowで、数式もほとんど使わずでした。躓きポイントがあるので、そこを中心にご紹介します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/513d10cd-ebd0-449f-330c-994fe5ed3c79.png)
※サムネイルのURLは期間限定なので、これを直接つかってTeamsに投稿しても、1日くらいしか表示されないです。

## 躓きポイント1 : ファイル作成トリガーでアイテムのIDが取れない!!
いきなりです。ファイルのサムネイルを取得するためのアクションでは、対象となるファイルのIDが必要なのですが、これがトリガーから取れませんでした！ (ここで20分くらい悩んだ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/5fe84ee2-1ce3-efb0-0c69-44a036ab6f7e.png)
[前回](https://qiita.com/h-nagao/items/bcd3f305d5abd1b11208)はファイルをFlowボタンから作成していたので、ファイル作成の結果としてサムネイル取得に必要なIdが得られていましたが、SharePointでファイル作成をきっかけにすると取れないんです！

しかたないので、複数ファイルを取得するアクションで、サムネイルURLを取得します。
ここでポイントは、**「作成日の降順で1件だけ取得すること」**です。これでトリガーのきっかけになった1件をとれます。
※ただし結果は配列になっているので、*first()* 関数か、```?[0]``` でレコードにアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/9ddbfd37-84ad-f7fb-2c83-377a5df99929.png)

## 躓きポイント2 : サムネイル大 だと画像が表示されないことがある
もともと軽い画像ならよいのですが、ちょっと重い画像をアップロードしたところ、画像が表示されない投稿が出てきました。(下図の下側)
サムネイル大 のサイズを見てみると、100KBいかないくらいだと表示されるのですが、数100KBになると表示してくれなくなりました。
これは元のファイルサイズではなく、**サムネイルのファイルサイズ**です。しかもエラーがでないので、検出のしようもない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/28494298-ee3c-b963-f888-a885ccd50b07.png)

ここは単純に、大をあきらめて中にして回避します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/ca2604af-6bd7-ec8f-232a-48a01153d4a3.png)


## 最後はすんなり。ファイル名とボタンを使ってAdaptive Cardを作成
ここまでできればあとは要領は一緒です。TeamsのAdaptive Cards投稿アクションを使って、最初に載せたような投稿をFlow botとして行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/910b6257-a732-0b55-ede7-a4be12dc062d.png)

Adaptive Cardは、[Adaptive Card Designer](https://adaptivecards.io/designer/)を使って行っていますが、そのうち、ここもビルトインのデザイナーになるんじゃないかなと思います。(なってほしい)

今回つかったjsonは

```AC.json
{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "size": "Medium",
            "weight": "Bolder",
            "text": "@{body('Get_files_(properties_only)')?['value']?[0]?['{FilenameWithExtension}']} is created!"
        },
        {
            "type": "Image",
            "altText": "",
            "url": "@{datauri(body('Get_file_content_using_path'))}"
        }
    ],
    "actions": [
        {
            "type": "Action.OpenUrl",
            "title": "View",
            "url": "@{body('Get_files_(properties_only)')?['value']?[0]?['{Link}']}"
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}
```

@マークがついている箇所は、皆さんのところで作成したFlowのアクション名に置き換える必要があります。アクション名まで同じになっていれば、コピペでうまく置き換えてくれます。

動かすとこのような感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/63afc66d-0033-fa92-e02d-3bf4f84fbf5b.png)

# おわり
Power Automateで利用可能なTeams向けのAdaptive Cardはとても使い勝手のいいアクションです。
jsonを0から作る必要はなく、デザイナーで提供されているプレビューを見ながら作り上げることができますし、jsonなので、ほかでも使いまわしがしやすいです。

また、今回はそれほど利用していませんが、Power Automateの試験的機能をONにすると数式バーがすごく使いやすく、また動的コンテンツも探しやすくなりますので、ぜひ試してみてください！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202779/f708fbeb-ec3a-452c-54b2-a3fc05d316d4.png)