【自動化事件簿】SharePoint Listの添付ファイルをPower Automateでドキュメントライブラリにアップロードしたのに開けない!
ごきげんよう、百合宮桜です。
今回は「自動化事件簿」と題しまして、私がやらかした設計ミスをさらしていこうと思います。
どんなフローを作ったの?
やらかしたフローはSharePointのListに保存した添付ファイルを指定フォルダーに格納するというものでした。
実際のやらかしフローはこんな感じ↓
添付ファイルの取得は前の写真と同じものです。
スイッチ部分でそれぞれのフォルダーに分けていくのです。
アップロードしたドキュメントのリンクを変数(アレイ)に格納して、データ操作で「結合」、Teamsのチャットに「ここにあるから見てね!」と投稿するものです。
これはやらかしフローなので、良い子の皆さんはマネしないでくださいね。
正解もちゃんと書くので、正解の方を真似してください!
事件だ! ファイルが開かない!
Teamsのメッセージにあるリンクをクリックして、ファイルを確認しようとします。すると……??
上記のようにエラーが出てしまい、中が見られないです。
エラーが出ていないっ……だとっΣ(・□・;)
フローに何か問題が??と思って、実行履歴を確認してみます。
なんということでしょう、とても美しく成功しています。
どうやらフローの失敗ではないようです。
ファイルサイズを見てみよう♪
フローは正しい、ならば何らかの原因でファイルが破損している?と仮説を立てました。
元データのファイルサイズとドキュメントライブラリのファイルデータを比べてみましょう。
比較してみると、明らかにサイズが異なります。
元データは単位が「キロバイト」なのに対し、ドキュメントライブラリは「バイト」です。小さすぎるでしょ!!
とはいえ、Power Automateで作ったファイルなので、やっぱり壊れた原因を探るにはフローの見直ししかありません。
上辺と中身のアクションが違う罠
先ほどは実績履歴から見ましたが、今度はフローの編集画面から見てみましょう。
ファイルの作成を行っているのは「スイッチ」で各ケースに分かれた後です。「ファイルの作成」というアクションを使用しています。
「ファイルの作成」は「添付ファイルの取得」アクションで取得した情報を入れ込んでいます。ここをひとつずつ確認していきましょう。
「サイトのアドレス」「フォルダーのパス」この2つはマウスぽちぽちで選択していっています。間違いありません。
「ファイル名」これもDisplayNameつまり名前なので合っています。
さて「ファイルコンテンツ」は……「Id」つまりファイル識別子が入っています。うん?ファイル識別子はファイルコンテンツなの??
困ったときはdocs!! さあdocsを見てみましょう(^^♪
「添付ファイルの内容の取得」とは「添付ファイルのコンテンツの取得」アクションのことです。つまり「ファイル識別子」プロパティを使用して、添付ファイルのコンテンツを取得するためのアクションということですね!
つまり前座!! あ~~!!
念のため、「添付ファイルのコンテンツを取得」アクションのdocsも各印しておきましょう。
はい! コンテンツを別の場所にコピーするためのデータは「添付ファイルのコンテンツを取得」アクションで取得されていることがわかりました!!
つまり私は、前座のデータでファイルを作成しようとしたおっちょこちょいですね!!
結局どうすればよろしいの?
「ファイルの作成」アクションの前に「添付ファイルのコンテンツを取得」アクションを入れましょう。スイッチ部分はこうなるのが正しいです↓。
このフローのレシピは次回の記事で解説するので、詳しいことは省きますが、「添付ファイルのコンテンツを取得」アクションと「ファイルの作成」アクションの中身はこんな感じ↓です。
添付ファイルのコンテンツの取得は
ID:「項目が作成された時」トリガーの「ID」
ファイル識別子:「添付ファイルの取得」アクションの「Id」
を入れています。
ファイルの作成は
ファイル名:「添付ファイルの取得」アクションの「DisplayName」
ファイルコンテンツ:「添付ファイルのコンテンツの取得」アクションの「添付ファイルのコンテンツ」
を入れています。
まとめ
今回のまとめは3点です。
フローにエラーがなくても、油断せずにいこう!
添付ファイルはコンテンツも忘れずに取得しよう!
中身(コンテンツ)がなくてもファイル自体は作成されるぞ!
それではごきげんよう。