【エラー】「〇〇」画面の「△△」画面項目がセクションであるため、regionContainerTypeは必須です の対処

Salesforce のデプロイ作業時に、「〇〇」画面の「△△」画面項目がセクションであるため、regionContainerTypeは必須です というエラーが表示されたときの対処方法です。

Salesforce のエラー、特にデプロイ時のエラーは日本語の記事が少なく、トラブルシューティングに苦労しました。

エラーの対象リソース

本エラーメッセージは、フロー(flows)、特に画面フローのデプロイ時に発生する場合があります。

エラー画面では「フローのバージョン」と表示されます。

flows について

メタデータデプロイでフロー(Flow)をデプロイする際に利用します。

package.xml では以下のように記載します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>xxx</members>
        <name>Flow</name>
    </types>
    <version>56.0</version>
</Package>

エラーの原因

エラーメッセージに表示されている「regionContainerType」をセクションに指定していないためです。

これはフローのメタデータ情報の一つで、以下の2種類の列挙値から選択します。

  • SectionWithHeader
  • SectionWithoutHeader

公式開発ガイドを見ると、次のように記載されています。

コンポーネントの種類が Section の場合にのみ使用できます。API バージョン 55.0 以降で利用できます。

メタデータ API 開発者ガイド:Flow

「API バージョン 55.0 以降で利用できます」とありますが、実際は画面フローでセクションを利用している場合は「必須」です。

公式ドキュメントにも、本記事執筆時点(2023年1月)では知る限り記載がありません。デプロイ時に悪戦苦闘しました。

Sponsored

しかし、この「regionContainerType」が含まれたメタデータは APIバージョン55.0ではリトリーブできません。

そんなバカな・・・と思うのですが。

解決策1

フローをリトリーブする際は、APIバージョン 56.0 でリトリーブしましょう。

原因はわかりませんが、56.0 であれば「regionContainerType」が含まれたメタデータを取得できます。

先ほどの package.xml の例の通り、以下のようにバージョン指定します。

<version>56.0</version>

解決策2

基本的に解決策1で解決するはずです。

しかし、何らかの制約がある場合は手作業でメタデータを上書きしてしまいましょう。

バージョンアップによって自動で設定される値は以下のとおりです。

<regionContainerType>SectionWithoutHeader</regionContainerType>

そのため、画面フローで特にセクションを指定していない場合は、手動で追記してあげれば良いです。

追記する箇所は、以下のようにセクションの <fields> に加えます。

<screens>
    <name>hogehogeScreen</name>
    <label>ほげほげ画面</label>
    {中略}
    <fields>
         <name>fugafuga_Section1</name>
         <fieldType>RegionContainer</fieldType>
         <fields>
               <name>fugafuga_Section1_Column1</name>
                {中略}
         </fields>
         <fields>
               <name>fugafuga_Section1_Column2</name>
                {中略}
         </fields>
         <isRequired>false</isRequired>
         <regionContainerType>SectionWithoutHeader</regionContainerType>
    </fields>
</screens>

おわりに

Salesforce では、バージョンアップで突然それまでのやり方でデプロイに失敗することがあります。

リリース時に必要な設定も日々変わるので、アンテナを広げておいた方がいいですね。

エラーに出会うと日本語の情報がなかなか見つからず、苦労しますよね。

本記事が少しでもお役に立ちますように。