【自動化事件簿】SharePoint Listの添付ファイルをPower Automateでドキュメントライブラリにアップロードしたのに開けない!

ごきげんよう、百合宮桜です。
今回は「自動化事件簿」と題しまして、私がやらかした設計ミスをさらしていこうと思います。

どんなフローを作ったの?

やらかしたフローはSharePointのListに保存した添付ファイルを指定フォルダーに格納するというものでした。
実際のやらかしフローはこんな感じ↓

画像1


添付ファイルの取得は前の写真と同じものです。
スイッチ部分でそれぞれのフォルダーに分けていくのです。
アップロードしたドキュメントのリンクを変数(アレイ)に格納して、データ操作で「結合」、Teamsのチャットに「ここにあるから見てね!」と投稿するものです。

画像2
リンク付きメッセージが投稿される

これはやらかしフローなので、良い子の皆さんはマネしないでくださいね。
正解もちゃんと書くので、正解の方を真似してください!

事件だ! ファイルが開かない!

Teamsのメッセージにあるリンクをクリックして、ファイルを確認しようとします。すると……??

Excelは「ファイルを開くことができませんでした」と表示
画像は「このファイルには、表示できるプレビューがありません」の表示

上記のようにエラーが出てしまい、中が見られないです。

エラーが出ていないっ……だとっΣ(・□・;)

フローに何か問題が??と思って、実行履歴を確認してみます。

全部緑のチェックマーク!

なんということでしょう、とても美しく成功しています。
どうやらフローの失敗ではないようです。

ファイルサイズを見てみよう♪

フローは正しい、ならば何らかの原因でファイルが破損している?と仮説を立てました。
元データのファイルサイズとドキュメントライブラリのファイルデータを比べてみましょう。

元データ
ドキュメントライブラリ

比較してみると、明らかにサイズが異なります。
元データは単位が「キロバイト」なのに対し、ドキュメントライブラリは「バイト」です。小さすぎるでしょ!!
とはいえ、Power Automateで作ったファイルなので、やっぱり壊れた原因を探るにはフローの見直ししかありません。

上辺と中身のアクションが違う罠

先ほどは実績履歴から見ましたが、今度はフローの編集画面から見てみましょう。
ファイルの作成を行っているのは「スイッチ」で各ケースに分かれた後です。「ファイルの作成」というアクションを使用しています。

スイッチ部分のフロー

「ファイルの作成」は「添付ファイルの取得」アクションで取得した情報を入れ込んでいます。ここをひとつずつ確認していきましょう。

ファイルの作成

「サイトのアドレス」「フォルダーのパス」この2つはマウスぽちぽちで選択していっています。間違いありません。
「ファイル名」これもDisplayNameつまり名前なので合っています。
さて「ファイルコンテンツ」は……「Id」つまりファイル識別子が入っています。うん?ファイル識別子はファイルコンテンツなの??
困ったときはdocs!! さあdocsを見てみましょう(^^♪

添付ファイルを取得する
操作 ID:GetItemAttachments
指定されたリストアイテムの添付ファイルのリストを返します。 「添付ファイルの内容の取得」の手順を追加し、このアクションによって返される「ファイル識別子」プロパティを使用して、ファイルの内容を取得できます。

SharePointリファレンス


「添付ファイルの内容の取得」とは「添付ファイルのコンテンツの取得」アクションのことです。つまり「ファイル識別子」プロパティを使用して、添付ファイルのコンテンツを取得するためのアクションということですね!
つまり前座!! あ~~!!
念のため、「添付ファイルのコンテンツを取得」アクションのdocsも各印しておきましょう。

添付ファイルのコンテンツを取得
操作ID:GetAttachmentContent
ファイル識別子を使用してファイルの内容を返します。 内容は別の場所にコピーすることも、添付ファイルとして使用することもできます。

SharePointリファレンス

はい! コンテンツを別の場所にコピーするためのデータは「添付ファイルのコンテンツを取得」アクションで取得されていることがわかりました!!
つまり私は、前座のデータでファイルを作成しようとしたおっちょこちょいですね!!

結局どうすればよろしいの?

「ファイルの作成」アクションの前に「添付ファイルのコンテンツを取得」アクションを入れましょう。スイッチ部分はこうなるのが正しいです↓。

正しいスイッチ部分

このフローのレシピは次回の記事で解説するので、詳しいことは省きますが、「添付ファイルのコンテンツを取得」アクションと「ファイルの作成」アクションの中身はこんな感じ↓です。

拡大図

添付ファイルのコンテンツの取得は
ID:「項目が作成された時」トリガーの「ID」
ファイル識別子:「添付ファイルの取得」アクションの「Id」
を入れています。

ファイルの作成は
ファイル名:「添付ファイルの取得」アクションの「DisplayName」
ファイルコンテンツ:「添付ファイルのコンテンツの取得」アクションの「添付ファイルのコンテンツ」
を入れています。

まとめ

今回のまとめは3点です。

  • フローにエラーがなくても、油断せずにいこう!

  • 添付ファイルはコンテンツも忘れずに取得しよう!

  • 中身(コンテンツ)がなくてもファイル自体は作成されるぞ!

それではごきげんよう。

いいなと思ったら応援しよう!