ましゅまろで質問をいただいて作成した掲題のフローを一部改良しました。 この章です。 ポイントになる部分を転記します。
[転記ここから] 「新しいメールが届いたとき 」トリガーの出力には添付ファイルの情報が含まれています。このトリガーが出力する情報には添付ファイルの実体は含まれていませんが、添付ファイルのIDが含まれています。 添付ファイルIDを「Office 365 Outlook」>「添付ファイルの取得」アクションに渡すと添付ファイルの実体を得ることができます。 [転記ここまで] 補足します。 配列のKeyに「ContentType」プロパティを使っていることが今回修正が必要になったポイントです。 公開したフローについて質問者のかたからこんな連絡をもらいました。前回の投稿で「添付ファイルID」でファイルの実体が取得できるという解説をしました
「ポイント1:メールに添付されたファイルの実体は「添付ファイルの取得」アクションで取得できる」
wataruf.hatenablog.com
「添付ファイルの取得」アクションに対して添付ファイルのIDを渡すための事前準備として、簡易版JSON Dictionary を使った配列を作成しています。
このフローでは簡易版JSON Dictionary の手動で作成する配列のKeyとして「新しいメールが届いたとき 」トリガーの「ContentType」プロパティを使っています。
公開したフローの要修正点の気付き
重要なのは以下の部分です。
テストデータで動かしたところ、CSVファイルのファイルタイプが application/octet-stream になっていてエラーとなっていました。
CSVファイルの「ContentType」プロパティが "text/csv" ではなく "application/octet-stream" であったためフローが期待通り動かなかったようです。
これで解決、、かと思いきや
改良したフローをDMで質問者のかたにお渡ししました。これで解決、、かと思いきや。
入力元のCSVがShift-JISであり、フローがその中身のテキストを認識できないという事態がおきているようです。
入力元のCSVがShift-JISで当然SPOはUTF-8なので現在仮にサクラエディタでUTF-8に変換してテストしております。
Power automateで何か手がないか調べてみたのですがなさそうな感じでした。何か手がありましたら....
すみません。私もそれを仕事で調査中です。まだ解決方法がわかっていないです。
(´・ω・`)
全部を解決できなくて心残りがありますが、少しでも助けになったのであれば幸いです。
(´・ω・`)
残った課題。Shift-JIS形式のCSVを読み取る方法については別途調査結果を公開したいと思います
このブログを書いている時点でまだ未解決の状況です。
解決方法しっているかた、情報いただけると助かります。
可能であればPower Automateのフローに閉じた方法で解決したいです。
おいしみさんが挫折したとなると望みは薄いかも。(´・ω・`)
僕は挫折しました(∵)
— おいしみ (@ksgiksg) August 10, 2022
今回の質問回答としてはこれで終了です。
今回は以上です。
SharePoint のドキュメント ライブラリ 上にあるファイルに対して、ファイル名を変更する方法をお話したいと思います。
One Drive では、ファイル名を変更するためのアクションが用意されていますが、SharePoint 用としては用意されていないため、『SharePoint に HTTP 要求を送信します』というアクションを利用して、ファイル名の変更を実行します!
今回は、ドキュメント ライブラリ上に『ファイルが作成されたとき』をトリガーとして、フローを作成します。必要に応じて、トリガーを変更して作成してください。
フローの全体像
フローの作成手順
①.トリガーに「ファイルが作成されたとき(プロパティのみ)」を利用します。
サイトのアドレス | 任意のサイト |
ライブラリ名 | 任意のライブラリ |
フォルダー | 任意のフォルダー |
②.1つ目のアクションに、「パスによるファイル メタデータの取得」を利用します。
サイトのアドレス | 任意のサイト |
ファイル パス | /[ファイルが作成されたとき(プロパティ)- 完全パス] /@{triggerOutputs()?[‘body/{FullPath}’]} |
③.2つ目のアクションに、「SharePoint に HTTP 要求を送信します」を利用します。
サイトのアドレス | 任意のサイト |
方法 | Get |
URI | _api/web/lists/GetByTitle(‘【任意のライブラリ名】’)/items([パスによるファイルメタデータの取得 – Id]) _api/web/lists/GetByTitle(‘【任意のライブラリ名】’)/items(@{outputs(‘パスによるファイルメタデータの取得’)?[‘body/ItemId’]}) |
④.フローを一度保存して、一度フローを実行します。
※③のアクションの結果を取得して、次のアクションの設定に利用していきます。
⑤.フローの実行履歴を開き、『SharePoint にHTTP 要求を送信します – GetMetadataType』の出力の body をコピーします。
⑥.3つ目のアクションに、『JSON の解析』を利用します。
コンテンツ | [ SharePoint にHTTP要求を送信します – GetMetadataType – body] @{body(‘SharePoint_にHTTP要求を送信します_-_GetMetadataType’)} |
スキーマ | 次の手順で、サンプルから生成します。 |
⑦.『JSON の解析』アクションの [サンプルから生成] をクリックして、手順⑥でコピーした出力結果を貼り付けて、[完了] をクリックします。
⑧.4つ目のアクションに、『SharePoint にHTTP 要求を送信します』を利用して、ファイルの名前変更を行います。
サイトのアドレス | 任意のサイト |
方法 | POST |
URI | _api/web/lists/GetByTitle(‘【任意のライブラリ名】’)/items([ パスによるファイルメタデータの取得 – Id]) _api/web/lists/GetByTitle(‘【任意のライブラリ名】’)/items(@{outputs(‘パスによるファイルメタデータの取得’)?[‘body/ItemId’]}) |
ヘッダー | 下表を参照 |
ボディ | { ‘__metadata’: { ‘type’: ‘[JSON の解析 – type]’ }, ‘FileLeafRef’: ‘【拡張子付きの任意のファイル名】’ } { |
Content-Type | application/json;odata=verbose |
If-Match | * |
X-HTTP-Method | MERGE |
以上、SharePoint 上のファイル名を変更する方法でした!
HTTP 要求 アクション、まだまだ理解が浅く苦手ですが、使いこなしたらできることがとっても広がりそう😊