クラウドフローで、メールの添付ファイルをSharePointに保存したけど開けないやフォルダAのファイルをフォルダBにコピーしたけど開けないなどの時の対処方法です。
ファイルが開けない
例えば、こんなフローで添付ファイルを SharePointに保存したとします。
動的コンテンツから ファイルコンテンツ(contentBytes)を追加しています。
特に保存でエラーになっているわけでなく、フローが正常に終了したけどファイルを開くとエラーになるときがあります。
保存したファイル
そのファイルを開くと開けない。
ファイルコンテンツにはファイルの種類情報も必要
ファイル作成アクションのファイルコンテンツには ファイルコンテンツ(contentBytes)のほかに、コンテンツの種類(content-type)も必要です。
コンテンツの種類(content-type)がなくても保存はできたりするのですが、ファイルが開けない場合、どちらかがかけている場合が多いです。
ファイルコンテンツ(contentBytes)と、コンテンツの種類(content-type)の確認
まずは、取得したデータにファイルコンテンツ(contentBytes)と、コンテンツの種類(content-type)が存在するか確認しましょう。
今回の場合だと、新しいメールが届いたとき(V3)トリガーの出力値を確認します。
attachments の中に、ファイルコンテンツ(contentBytes)とコンテンツの種類(content-type)があるのが確認できました。
どちらか(または両方)が欠落していると、開けないファイルになる可能性があるので、どちらかがない場合はトリガーの設定値の確認や他のアクションで取得するなどを検討します。
ファイルコンテンツの手動での作成
ファイルコンテンツ(contentBytes)とコンテンツの種類(content-type)を含んだ、ファイルコンテンツを作成アクションで準備します。
こんな感じで作成します。
こんな感じ。
{ "$content-type": @{item()?['contentType']}, "$content": @{item()?['contentBytes']} }
ファイル作成アクションのファイルコンテンツを変更
ファイル作成アクションのファイルコンテンツを 作成アクション の 出力 に変更します。
実行結果
実行してみます。
SharePointを開いてファイルを開きます。
無事、開けました。
さいごに
作成アクションで、ファイルコンテンツ(contentBytes)とコンテンツの種類(content-type) を含んだjsonを作成すれば開けないという問題は解消されました。
これでも開けない場合、ファイルコンテンツ(contentBytes)かコンテンツの種類(content-type) のどちらか(または両方)がそもそも含まれていない可能性があるので、ファイルを取得しているトリガーやアクションの設定値を確認してみましょう。
ちなみに、boxを保存したときに開けないファイルが作成された場合、同様の方法で回避できたので、クラウドストレージに保存する場合は、ファイルコンテンツ(contentBytes)とコンテンツの種類(content-type) を確認してみるといいかもしれません。