【Power Automate】SharePointにある画像をランダムに取得してメールに表示するフロー

Power AutomateでSharePointにある画像をランダムに取得してメールに表示するフローを作りました。

SharePointのフォルダにこんな画像が入っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/428b1914-ec8b-43d0-b9b2-274072e880fa.png)


この画像をランダムで取得してメールに表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/c7af1702-b0dc-4801-af0d-f50273bc0ac4.png)


またはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/fc3428ce-9de5-4b2a-9b24-fcce73abd341.png)

ではフローを作っていきます。

## 全体の流れ
このフローの全体の流れは以下のとおりです。

* 画像が入っているフォルダのデータをリスト（配列）で取得
* リストの中にある画像をランダムに1つ選択
* 選択した画像をbase64に変換してメールで表示する


## フロー
実際のフローはこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/668fe733-0767-4737-b5f7-298c41d400a8.png)


### 1.フローを手動でトリガーする
テストなので手動にしています。
定期実行するにはスケジュール済クラウドフローを使うとできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/c18de9f1-2df3-45e4-a7e3-4fb30d94d6fb.png)

### 2.フォルダの一覧（SharePoint）
SharePointアクションからフォルダの一覧アクションを選択します。

サイトのアドレスで画像の入っているSharePointサイトを選択します。
ファイル識別子は画像の入っているフォルダを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/1f02965e-0d4c-4a31-a67e-4c4e4d732205.png)

### 3.変数を初期化する（fileList）
変数アクションから変数を初期化するアクションを選択します。
ここにSharePointのフォルダの一覧で取得した結果を入れます。

名前をfileList、TypeをArray（配列なので）、Valueにフォルダの一覧で取得した結果を入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/213d85ee-e6aa-4ac6-8afb-bc89145b8aa5.png)


### 4.変数を初期化する（randomNumber）
再び変数アクションから変数を初期化するアクションを選択します。
今度はランダムな数字を入れる変数です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/6b9ea418-1942-4231-a3af-b18c34460bfa.png)


Valueにはこのような式を入れます。
```
rand(0,length(variables('fileList')))
```


この式の解説はClaudeさんにお願いします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/7e898b62-13cd-438b-902a-2dc8bccb3bae.png)


### 5.作成（画像を選択）
データ操作アクションから作成アクションを選択します。
ここで実際に画像を特定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/96f22e36-3d65-4e3b-8372-e08ce22418aa.png)


式をこのように入力します。
```
variables('fileList')[variables('randomNumber')]
```


ふたたびClaudeさんの解説。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/2c844009-fce0-409a-b240-69f1a39eb1da.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/95c906c0-009c-433c-b199-e39dcaa68e66.png)


### 6.パスによるコンテンツファイルの取得
SharePointアクションからパスによるコンテンツファイルの取得アクションを選択します。

サイトのアドレスで画像の入っているSharePointサイトを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/a896534b-710e-4770-b04b-8d78832ff338.png)



ファイルパスはこのように入力します。
ランダムに選択した画像のパスを取得します。
```
outputs('作成（画像を選択）')?['Path']
```

動的コンテンツで１つ前の作成アクションを選択してから`?['Path']`を足してあげるのが間違えなくて良きですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/1e98adc7-8cf5-4706-a3ca-0306778051f9.png)


### 7.作成（画像をbase64で取得）
データ操作アクションから作成アクションを選択します。
表示する画像をbase64で取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/0f8b0577-f8b9-440f-96b1-eeaa2b0221a5.png)


入力内容はこちらです。
```
base64(body('パスによるファイル_コンテンツの取得'))
```

base64()の中にSharePointのアクションで取得したデータを入れましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/c41d643c-8d1b-42fe-8195-8ff999732c64.png)


### 8.メールの送信 (V2)
最後にメール送信を送信します。
Office 365 Outlookアクションからメール送信（V2）アクションを選択します。

宛先と件名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/1220c064-3d87-4cca-a6c1-34b747b1ed12.png)


本文を入力する前にコードビューを表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/89b8af94-e976-4e4a-b7d1-6ac062d43077.png)

このように入力します。
```
今日のくま🧸
<img src="data:image/png;base64,@{outputs('作成（画像をbase64で取得）')}">
```
`outputs('作成（画像をbase64で取得）')`の部分は動的アクションから選択するのが良きですね。



以上です。お疲れさまでしたー🎉
実行してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953149/021ddb32-f9af-4cdc-9a73-aa5d6c589007.png)

お好きな画像が送信できたでしょうか？
では引き続き素敵なPower Automateライフをお過ごしくださいね🍀