ADVERTISEMENT

【Power Automate】日本語列名の参照でつまずく時の入力値と条件分岐の直し方

【Power Automate】日本語列名の参照でつまずく時の入力値と条件分岐の直し方
🛡️ 超解決

Power AutomateでExcelやSharePointリストなど日本語の列名を含むデータを扱う際、「列名が認識されない」「条件分岐でうまく比較できない」といったトラブルが発生することがあります。特に、日本語の全角文字やスペースが含まれていると、フローが期待通りに動作しない事例が少なくありません。この記事では、日本語列名の参照でつまずく原因を整理し、入力値の指定方法や条件分岐の修正手順を具体的に解説します。実際の運用で役立つ失敗パターンや管理者への確認ポイントも含めて紹介しますので、業務フローの構築にお役立てください。

【要点】この記事で確認すること

  • 最初に見る場所: フローの実行履歴のエラー詳細、動的コンテンツの一覧、式ビルダーでの列名の表示
  • 切り分けの軸: データソース(Excel Online・SharePoint・Dataverseなど)の違い、トリガーとアクションの構成、列名の表記(半角・全角・スペース)
  • 注意点: 会社PCで管理者が設定したデータ損失防止ポリシー(DLP)やコネクタの承認状況を事前に確認すること

ADVERTISEMENT

日本語列名でエラーが発生する主な原因

Power Automateで日本語列名を正しく参照できない背景には、いくつかの技術的な要因があります。原因を理解しておくことで、適切な回避策を選択できるようになります。

列名に含まれるスペースや特殊文字の扱い

日本語の列名には「氏名」「部署名」といった単一の単語だけでなく、「担当者名(メイン)」のように括弧やスペースが含まれる場合があります。Power Automateの動的コンテンツでは、列名にスペースがあると内部的にアンダースコアに置き換わるなど、表示と実際のキーが異なることがあります。また、全角と半角の混在も予期せぬ動作の原因となります。

データ型の不一致による参照エラー

ExcelやSharePointリストの列は「テキスト」「数値」「日付」など型を持っています。Power Automateで値を取得した際、同じ型で比較しないと条件分岐が意図しない結果になります。例えば、数値列をテキストとして比較すると「123」と「123」が等しいと判断されないケースもあります。

動的コンテンツの解決に失敗するケース

フローの設計時に動的コンテンツが正しく表示されない場合、列名の日本語が原因でドロップダウンに候補が現れないことがあります。これはコネクタが列名を正しく認識できていないか、スキーマが取得できていない状態です。特にExcel Online(Business)コネクタで「テーブルとして書式設定」していない範囲を読み取ると、列名が空文字や連番として扱われることがあります。

データソース 日本語列名の扱い 主な注意点
Excel Online(Business) テーブルとして書式設定が必要。動的コンテンツに列名が出現しない場合は範囲指定を確認 列名に空白や記号があると参照できない場合あり
SharePointリスト 内部名(半角英数)と表示名(日本語)が異なる。動的コンテンツでは表示名が使われる 条件式では内部名を使用しないとエラーになることがある
Dataverse 論理名(半角英数)が基準。日本語表示名はスキーマ名として扱われる 環境によってスキーマ名の取得に時間がかかる場合がある

日本語列名を正しく参照するための入力値の指定方法

列名の参照エラーを防ぐには、動的コンテンツと式の使い分けが重要です。以下の手順で安定した参照を実現できます。

  1. トリガーまたはアクションの出力から動的コンテンツを開き、目的の列名が表示されているか確認します。表示されない場合は、直前のアクションが正しくテーブルやリスト項目を取得しているか見直してください。
  2. 列名が動的コンテンツに表示されても、実際には正しく評価されないことがあります。その場合は、式エディタを開いて列名を引用符で囲んで指定します。例:outputs('アクション名')?['列名']
  3. 式の中で列名を直接記述するときは、全角スペースや特殊文字に注意します。SharePointリストの場合、表示名の代わりに内部名(例:’Title’の代わりに’Title’そのまま)を使うと安定します。内部名はリスト設定の「列」から確認できます。
  4. Excelの列を参照する場合は、テーブル名と列名の組み合わせを確認します。例えば「Table1[#Data]」のような範囲名ではなく、テーブル内では「Table1[列名]」の形式でアクセスします。テーブルが日本語列名で構成されていることが前提です。
  5. フローを実行し、結果を確認します。エラーが発生した場合は、実行履歴からアクションの出力を見て、列名のキーが想定通りかチェックします。必要に応じて列名を修正してください。

条件分岐で日本語列名を使う場合の直し方

条件分岐(Conditionアクション)で日本語列名を比較する際、値が正しく判定されないケースがよくあります。ここでは具体的な修正手順を説明します。

条件式の構文とデータ型の一致

条件アクションの左辺と右辺には、動的コンテンツまたは式を指定します。テキスト列を比較する場合は、値が半角か全角か、スペースの有無に注意します。数値列を比較する場合は、int()関数で型変換してから比較します。例:int(outputs('アクション名')?['数量']) のように数値化します。

式ビルダーでのエスケープと内部名の利用

SharePointリストで条件分岐を行う際、表示名にスペースが含まれていると式ビルダーでエラーになります。その場合は、リスト設定から内部名(ASCII文字)を確認し、式の中で内部名を使用します。内部名は通常、表示名の半角英数自動生成ですが、変更されていることもあるため必ず実物を確認します。式の例:outputs('アクション名')?['InternalColumnName']

実践的な修正例

「ステータス」列(日本語)の値が「完了」のときに分岐するケースを考えます。動的コンテンツで「ステータス」を選んでも値が比較できない場合、outputs('アクション名')?['ステータス'] と式で明示的に指定することで解決することがあります。また、値が全角半角混在の場合は、trim()関数で前後のスペースを除去し、equals(outputs(...)?['ステータス'], '完了') のように記述します。

よくある失敗パターンと回避策

パターン1: 動的コンテンツに列名が表示されない

Excelの範囲を「テーブルとして書式設定」していない場合、動的コンテンツに列名が現れません。回避策として、Excelファイル側で対象範囲をテーブルに変換してください。また、SharePointの場合はリストが正しく認識されているか、コネクタが最新の列スキーマを取得しているかどうかがポイントです。一度フローを保存して開き直すと解決することもあります。

パターン2: 条件分岐で「等しい」が機能しない

値が「はい」「true」などの真偽値型の場合、テキスト比較では正しく判定できません。例えば、SharePointの「はい/いいえ」列はブール型なので、条件式では outputs(...)?['列名'] が true か false かを直接比較します。数値列でも同様に、型を合わせることが必要です。

パターン3: 列名にスペースが含まれているとエラーになる

動的コンテンツでは表示されても、式で直接記述する際にスペースが原因で構文エラーになることがあります。この場合、列名をシングルクォーテーションではなく、角括弧(['列 名'])で囲みます。また、式ビルダー内で自動的にエスケープ処理が行われることを期待せず、手動でクォーテーションを調整するほうが確実です。

管理者に確認すべき設定と情報

フローがチームや組織全体で共有されている場合、管理者に以下のポイントを確認するとトラブルシューティングがスムーズになります。

  • データ損失防止ポリシー(DLP): 特定のコネクタ(Excel Online、SharePointなど)が業務ポリシーで制限されていないか確認します。制限があると動的コンテンツが正しく取得できないことがあります。
  • コネクタの承認状態: フローで使用するコネクタがユーザーごとに承認されている必要があります。特にゲートウェイ経由のデータソースでは管理者の設定が影響します。
  • 内部名と表示名のマッピング: SharePointリストでは、管理者が列の内部名を変更している可能性があります。リスト設定の「列」一覧から内部名を取得して教えてもらいましょう。
  • 環境の違い: Power Automateの環境(既定環境、サンドボックス、本番環境)によって、許可されるコネクタや動作が異なる場合があります。管理者に環境のポリシーを確認してください。

よくある質問(FAQ)

Q1: Excelの列名が動的コンテンツに表示されません。どうすればいいですか?
まず、Excelの範囲が「テーブルとして書式設定」されているか確認してください。テーブルになっていない場合、Power Automateは列名を認識できません。テーブル化した後、コネクタの再接続が必要な場合もあります。

Q2: Share Pointリストの日本語列名は、条件式でそのまま使えますか?
動的コンテンツから列を選択すれば通常は使えますが、内部名が異なる場合やスペースを含む列名ではエラーになることがあります。安定させるには、式で内部名(半角英数)を使って outputs(...)?['InternalName'] と記述することをおすすめします。

Q3: 条件分岐で「空欄」かどうかを判定したいのですが、どう書けばいいですか?
空欄の判定には empty(outputs(...)?['列名']) 式を使うか、条件アクションで「等しくない」の右辺に空のテキスト(“”)を指定します。SharePointリストの空欄は null と空文字の両方があり得るため、empty() 関数のほうが確実です。

まとめ

Power Automateで日本語列名を扱う際のつまずきは、列名の表記ゆれやデータ型の不一致、動的コンテンツの解決失敗に起因することがほとんどです。まずはデータソースの種類に応じた正しい参照方法(テーブル化、内部名の利用、式での明示指定)を試してみてください。条件分岐では型変換とエスケープ処理を忘れずに行うことで、安定したフローを実現できます。管理者にはDLPポリシーや内部名の設定を確認してもらい、環境に応じた対策を講じるとよいでしょう。本記事の手順を参考に、日本語列名のトラブルをスムーズに解決してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT