Power Automateで受信メールの添付ファイルを自動保存するフローを作ったものの、ファイル名が「????.pdf」や「‾‾‾.xlsx」のように文字化けしてしまうケースがあります。日本語のファイル名が正しく保存されないと、後続の処理に支障が出るため、早急に原因を突き止めたいところです。この問題の原因は、フローで使用している接続の種類や、フロー自体の所有者アカウントにあることが多く、意外と見落とされがちです。本記事では、添付ファイル名の文字化けが発生するメカニズムを解説し、接続設定と所有者の確認手順を具体的に説明します。実務で遭遇する失敗パターンや管理者に伝えるべき情報もまとめていますので、ぜひトラブルシューティングに役立ててください。
【要点】この記事で確認すること
- 最初に見る場所: フロー内のトリガー(「新しいメールが届いたとき」など)で使用している接続の種類(個人用接続か共有接続か)、およびフローの所有者情報。
- 切り分けの軸: 接続の種類を確認する(個人用接続 vs 共有接続)、フローの所有者が誰かを確認する(自分か別ユーザーか)、テストメールで現象を再現する。
- 注意点: 会社のポリシーによっては、共有接続の利用が制限されている場合がある。また、フローの所有者を変更するには、元の所有者の協力が必要なケースがある。
ADVERTISEMENT
目次
文字化けの原因を理解する
Power Automateでメールの添付ファイル名が文字化けする原因は、主に次の3つに分類できます。まず、メールのエンコーディングの問題です。送信側のメールクライアントがファイル名をISO-2022-JPやUTF-8でエンコードしている場合、Power Automateのデフォルトのデコード方法が合わないと文字化けが発生します。次に、使用している接続の種類です。個人用接続(ユーザー自身の認証)と共有接続(サービスプリンシパルなど)では、メールサーバーから取得できる情報に違いが出ることがあります。特にExchange Onlineの共有メールボックスにアクセスする場合、接続の権限によってファイル名のエンコードが正しく取れない事例が報告されています。最後に、フローの所有者の影響です。フローは所有者のコンテキストで実行されるため、所有者のアカウント設定(言語、タイムゾーン、メール設定)が添付ファイル名の解釈に影響を与える可能性があります。
接続設定の確認と修正手順
まずは、フローで使用している接続を確認します。Power Automateには個人用接続と共有接続の2種類があり、それぞれ動作が異なります。
個人用接続と共有接続の違い
| 項目 | 個人用接続 | 共有接続 |
|---|---|---|
| 作成方法 | 各ユーザーがPower Automate上でサインインして作成 | 管理者がAzure ADアプリケーションを登録し、サービスプリンシパルで作成 |
| 権限 | ユーザー自身のメールボックスにアクセス | サービスプリンシパルに付与された権限に依存(委任アクセスなど) |
| ファイル名エンコードの扱い | ユーザーの言語設定やメール設定に影響されやすい | サービスプリンシパルの設定やAPIのデフォルト動作に依存 |
| 文字化けが起きやすいケース | 日本語ファイル名を含むメールを共有メールボックスから取得するとき | サービスプリンシパルに正しいMail.Read権限が付与されていないとき |
接続の種類を確認するには、フローエディターでトリガーまたはアクションをクリックし、表示される接続情報を確認します。個人用接続は「[ユーザー名]の接続」、共有接続は「[アプリ名]の接続」のように表示されます。もし個人用接続で文字化けが発生している場合は、共有接続に切り替えることで解決する可能性があります。
接続を再作成する具体的な手順
- Power Automate(make.powerautomate.com)にサインインし、該当フローを開きます。
- トリガー(例:「新しいメールが届いたとき」)をクリックし、右側の「接続」欄に表示されている既存の接続を確認します。
- 接続の横にある「…」メニューから「削除」を選択し、現在の接続を削除します。この操作により、フローが切断状態になります。
- 同じトリガー設定画面で「新規作成」をクリックし、新たな接続を作成します。このとき、個人用接続を作成するのか、共有接続を作成するのかを選択します。共有接続の場合は、事前にAzure ADにアプリケーションを登録しておく必要があります。
- 接続作成後、フローを保存し、テストメールを送信して添付ファイル名が正しく取得できるか確認します。
この手順で文字化けが解消されない場合は、フローの所有者の確認に進みます。
フローの所有者を確認する
フローの所有者は、フローが実行される際のセキュリティコンテキストを決定します。所有者のアカウント設定(特にメールのエンコード設定やタイムゾーン)が添付ファイル名の取得に影響することがあります。
所有者が文字化けに与える影響
例えば、フローの所有者が日本語環境でないユーザー(英語環境のみのユーザー)である場合、Power Automateは添付ファイル名をシステムのデフォルトエンコーディング(Windows-1252など)で解釈しようとし、日本語文字が正しく変換されず文字化けします。また、所有者が共有メールボックスへのアクセス権限を持っていない場合も、ファイル名が正しく取得できない現象が発生します。
所有者を変更する手順
フローの所有者を変更するには、以下の操作を行います。
- Power Automateのフローの一覧で、該当フローの「…」メニューから「共有」を選択します。
- 共有画面で、フローを新しいユーザー(日本語環境のユーザー)に共有します。ただし、所有者を直接変更する機能は標準では提供されていません。回避策として、新しいユーザーがフローをコピー(「名前を付けて保存」)して自分が所有者となる新しいフローを作成する方法を取ります。
- 新しいフローで接続を再設定し、テストを行います。元のフローは必要に応じて無効化または削除します。
この方法により、実質的にフローの所有者を変更したのと同じ効果が得られます。ただし、組織のポリシーによってはフローのコピーが制限されている場合もあるため、管理者に確認してください。
文字化けを防ぐための実装テクニック
接続や所有者の設定を変更しても文字化けが解決しない場合は、フロー内でファイル名を明示的にデコードする処理を追加します。
式を使用したデコード方法
Power Automateの式ビルダーで、以下のような関数を使用してファイル名を変換します。
decodeUriComponent(triggerOutputs()?['headers']?['X-MS-Exchange-Organization-Attachment-Filename'])
ただし、X-MS-Exchange-Organization-Attachment-Filenameヘッダーが存在しない場合もあるため、代わりに添付ファイル名をBase64でデコードする必要があるケースもあります。以下の式が参考になります。
if(contains(outputs('Get_attachment')?['body/name'], '=?'), decodeUriComponent(replace(outputs('Get_attachment')?['body/name'], '=?UTF-8?B?', '')), outputs('Get_attachment')?['body/name'])
この式は、ファイル名がBase64エンコードされている場合にデコードを試みます。実際のフローでは、メールの送信元や環境に応じて適切な式を選択する必要があります。
カスタムコネクタの利用
根本的な解決策として、Microsoft Graph APIを直接呼び出すカスタムコネクタを作成し、添付ファイル名を取得する方法もあります。これにより、エンコードの変換を自前で制御できるようになります。ただし、開発コストがかかるため、頻繁に発生する問題でなければ推奨しません。
よくある失敗パターンとその対策
- 失敗パターン1: 個人用接続で共有メールボックスにアクセスしている。対策:共有メールボックスにアクセスする場合は、共有接続を使用するか、個人用接続でもアクセス権限を適切に設定する。
- 失敗パターン2: フローの所有者がメールボックスへのアクセス権限を持っていない。対策:所有者を適切なユーザーに変更する。
- 失敗パターン3: 添付ファイル名に特殊文字(記号や全角スペース)が含まれている。対策:ファイル名をサニタイズするアクションを追加する。
- 失敗パターン4: メールのエンコードがShift_JISで、Power AutomateがUTF-8として解釈する。対策:エンコード変換の式を組み込む。
管理者に確認すべき設定
文字化け問題が解決しない場合、以下の点を管理者に確認してください。
- Exchange Onlineのメールフロールールで、添付ファイル名のエンコードが強制変換されていないか。
- Azure ADのサービスプリンシパルに適切なMail.Read権限が付与されているか(共有接続利用時)。
- Power Automateのデータロス防止ポリシー(DLP)で、使用しているコネクタが制限されていないか。
- 組織のメールサーバーが添付ファイル名に使用する文字エンコードの仕様を確認する。
まとめ
Power Automateでの添付ファイル名の文字化けは、接続の種類とフローの所有者に起因することが多いです。まずは使用している接続が個人用か共有接続かを確認し、必要に応じて切り替えましょう。次にフローの所有者が適切なアカウントであるかを確認し、日本語環境のユーザーに変更することを検討します。それでも解決しない場合は、式やカスタムコネクタでデコード処理を実装します。管理者に確認すべき設定を事前にリストアップしておくことで、スムーズに問題を解決できます。適切な対処により、日本語ファイル名の自動保存を安定させ、業務効率を維持しましょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
