---
title: "インポートコンタクトウィザードにカスタムコンタクトのファセットを含めるように設定してください"
slug: "configure-the-import-contacts-wizard-to-include-custom-contact-facets"
abstract: "CSVファイルからカスタム連絡先データのインポートを設定してください。"
---
# インポートコンタクトウィザードにカスタムコンタクトのファセットを含めるように設定してください

List Managerで、CSVファイルから連絡先をインポートすると、インポートしたファイルのフィールドを以下のデフォルトのSitecoreフィールドにマッピングできます:

-   識別子
-   識別子の出典
-   メールアドレス
-   名前
-   姓

![Configure\_the\_Import\_Wizard\_to\_include\_custom\_contact\_facets-Picture\_1-rId9-1362955973.png](https://doc.sitecore.com/api/markdown-image/xp/ja/users/104/sitecore-experience-platform/images/Configure_the_Import_Wizard_to_include_custom_contact_facets-Picture_1-rId9-1362955973.png)

インポートしたファイルフィールドをマッピングするために追加のSitecoreフィールドが必要な場合は、**インポート** 連絡先ウィザードを拡張して以下を含めることができます:

-   **あらかじめ定義されたコンタクトファセット** – **インポートコンタ**クトウィザードに追加できる[利用可能なあらかじめ定義されたコンタクトファセット](https://doc.sitecore.com/xp/en/developers/100/sitecore-experience-platform/en/facets.html)は以下の通りです:
    -   個人情報
    -   メールアドレスリスト
    -   アドレスリスト
    -   電話番号リスト
    -   同意情報
    -   リスト購読
    -   自動化計画退出
    -   AutomationPlanEnrollmentCache
    -   アバター
-   **新しいカスタムコンタクトのファセット** – [カスタムファセットを作成し](https://doc.sitecore.com/xp/en/developers/100/sitecore-experience-platform/en/create-a-custom-facet.html) 、モデル設定を更新してコン **タクトのインポート** ウィザードに含めることができます。

## あらかじめ定義されたファセットをマッピングフィールドとして追加します

List Managerは、あらかじめ定義されたコンタクトマッピングフィールドのリストを提供します。 **Import contacts**ウィザードを拡張するには、Coreデータベースでブランチを使って利用可能なマッピングフィールドのいずれかを追加してください。

あらかじめ定義された写像フィールドを追加するには:

1.  Coreデータベースのコンテンツエディターで、*/sitecore/client/Applications/List Manager/Dialogs/ImportWizardDialog/PageSettings/TabControl Parameters/Map/ImportModel*フォルダに移動します。
    
2.  ImportModelフォルダを右クリックし、「**挿入**」をクリックし、あらかじめ定義されたコンタクトマッピングフィールドのいずれかをクリックします。
    
    ![Configure\_the\_Import\_Wizard\_to\_include\_custom\_contact\_facets-Picture\_2-rId11-927383026.png](https://doc.sitecore.com/api/markdown-image/xp/ja/users/104/sitecore-experience-platform/images/Configure_the_Import_Wizard_to_include_custom_contact_facets-Picture_2-rId11-927383026.png)
    

## マッピングフィールドとして新しいファセットを追加

**Import contacts**ウィザードを拡張して、あらかじめ定義されたファセットをSitecoreのマッピングフィールドとして表示するには、Content Editorでその定義されたファセット用の新しいインポートモデルフィールドを作成します。

新しい面をマッピングフィールドとして追加するには:

1.  Coreデータベースのコンテンツエディターで、*/sitecore/client/Applications/List Manager/Dialogs/ImportWizardDialog/PageSettings/TabControl Parameters/Map/ImportModel*フォルダに移動します。
    
2.  */sitecore/client/Applications/List Manager/Templates/ImportModelField*テンプレートに基づいて新しいインポートモデルフィールドアイテムを作成します。そのためには、ImportModelフォルダ内の既存のアイテムを1つ複製します。
    
3.  新しいアイテムを変更するには、**FieldName**フィールドで、**Import contacts**ウィザードで表示するSitecoreマッピングフィールドの名前を指定します。
    
4.  **DataField**フィールドでは、Facet Mapperがインポート値をどこに保存するかxConnect facetプロパティを認識するために使用するキーを指定します。例えば、*Personal\_Suffix*と名付け、後でこのキーを使ってPersonal facetの**Suffix**フィールドを埋めます。
    
    ![Configure\_the\_Import\_Wizard\_to\_include\_custom\_contact\_facets-Picture\_6-rId12-1977402909.png](https://doc.sitecore.com/api/markdown-image/xp/ja/users/104/sitecore-experience-platform/images/Configure_the_Import_Wizard_to_include_custom_contact_facets-Picture_6-rId12-1977402909.png)
    
    **Required**フィールドは、**Import contacts**ウィザードの**Map**タブでフィールドマッピングを指定する必要があるかどうかを指定します。これはUIの検証のみです。マッピングフィールドを必須としてマークしたい場合は、Sitecore.ListManagement.configファイルのListManagement.Import.RequiredFields設定内の必須フィールドリストにもマッピングフィールドを追加する必要があります:
    
    <!-- REQUIRED MAPPING FIELDS
    The list of the required mapping fields. If at least one of these fields is missing in a CSV file or is not mapped properly, the entire contact is skipped and not imported. Please note that the field names below should correspond to the Import Dialog mapping fields configured in the 'core' database (you may use predefined Branches to add new mapping fields):'/sitecore/client/Applications/List Manager/Dialogs/ImportWizardDialog/PageSettings/TabControl Parameters/Map/ImportModel'-->
    <setting name="ListManagement.Import.RequiredFields" value="Identifier|PreferredEmail\_SmtpAddress|Personal\_FirstName|Personal\_LastName" />
    

> !注インポート中、必要なフィールドが空の場合、インポートファイルの行全体がスキップされます。List Managerのデフォルトの必須フィールドは、識別子、メールアドレス、名前、姓です。

## 既存のインポートマッパーを拡張する

List Managerはデフォルトのファセットマッパーの範囲を提供しますが、必要に応じてこれらのファセットマッパーを拡張することも可能です。例えば、EmailAddressListのファセットには「Others」と呼ばれる高度なメール辞書が含まれています。

以下の例では、コードサンプルが既存のPreferredEmailMapperクラスを装飾し、個人用および仕事用メールをEmailAddressList.Others辞書に追加できるようにします。

既存のインポートマッパーを拡張するには:

1.  既存のPreferredEmailFacetMapperクラスを装飾するためにExtendedEmailFacetMapperSampleクラスを作成・実装する:
    
    public class ExtendedEmailFacetMapperSample : IFacetMapper
    {
     private readonly PreferredEmailFacetMapper mapper;
     // Decorate the existing PreferredEmailMapper
     public ExtendedEmailFacetMapperSample(
     PreferredEmailFacetMapper mapper)
     {
     this.mapper = mapper;
     }
     public MappingResult Map(
     string facetKey,
     Facet facet,
     ContactMappingInfo mappings,
     string data)
     {
     // Call the existing email mapper to map all the basic email fields
     var result = this.mapper.Map(facetKey, facet, mappings, data);
     var facetMappedResult = result as FacetMapped;
     if (facetMappedResult == null)
     {
     return result;
     }
     var partiallyMappedFacet = facetMappedResult.Facet as EmailAddressList;
     if (partiallyMappedFacet == null)
     {
     return result;
     }
     // Set Personal email
     var personalEmail = mappings.GetValue("Emails\_Others\_Personal", data);
     if (!string.IsNullOrWhiteSpace(personalEmail))
     {
     partiallyMappedFacet.Others"Personal" = new EmailAddress(personalEmail, false);
     }
     // Set Work email
     var workEmail = mappings.GetValue("Emails\_Others\_Work", data);
     if (!string.IsNullOrWhiteSpace(workEmail))
     {
     partiallyMappedFacet.Others"Work" = new EmailAddress(workEmail, false);
     }
     return result;
     }
    }
    
2.  sitecore/import/facetMapperセクションのSitecore.ListManagement.configファイルにファセットマッパーを登録してください:
    
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
     <sitecore>
     <import>
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.CompositeFacetMapperCollection, Sitecore.ListManagement.XConnect.Web">
     <param resolve="true" type="Sitecore.Abstractions.BaseLog, Sitecore.Kernel"/>
     <facetMappers hint="list:Add">
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.ListSubscriptionMapper, Sitecore.ListManagement.XConnect.Web" />
     <facetMapper type="MyProject.ExtendedEmailFacetMapperSample, MyProject">
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PreferredEmailFacetMapper, Sitecore.ListManagement.XConnect.Web" />
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PersonalInformationFacetMapper, Sitecore.ListManagement.XConnect.Web" />
     </facetMappers>
     </facetMapper>
     </import>
    </configuration>

## 新しいインポートマッパーを作成する

既存のインポートマッパーを使えない場合は、カスタムインポートマッパーを作成できます。例えばPreferredAddressFacetMapper

新しいインポートマッパーを作成するには:

1.  Sitecore.ListManagement.XConnect.Web.Import.IFacetMapperを実装する新しいPreferredAddressFacetMapperを作成してください:
    
    public class PreferredAddressFacetMapper : IFacetMapper
    {
     public PreferredAddressFacetMapper()
     : this(CollectionModel.FacetKeys.AddressList)
     {
     }
     public PreferredAddressFacetMapper(string facetName)
     {
     Assert.ArgumentNotNull(facetName, nameof(facetName));
     this.FacetName = facetName;
     }
     public string FacetName { get; }
     public MappingResult Map(
     string facetKey,
     Facet source,
     ContactMappingInfo mappings,
     string data)
     {
     if (facetKey != this.FacetName)
     {
     return new NoMatch();
     }
     var preferredAddress = new Address();
     var addressLine1 = mappings.GetValue(nameof(preferredAddress.AddressLine1), data);
     var addressLine2 = mappings.GetValue(nameof(preferredAddress.AddressLine2), data);
     var addressLine3 = mappings.GetValue(nameof(preferredAddress.AddressLine3), data);
     var addressLine4 = mappings.GetValue(nameof(preferredAddress.AddressLine4), data);
     var city = mappings.GetValue(nameof(preferredAddress.City), data);
     var country = mappings.GetValue(nameof(preferredAddress.CountryCode), data);
     var postalCode = mappings.GetValue(nameof(preferredAddress.PostalCode), data);
     var stateProvince = mappings.GetValue(nameof(preferredAddress.StateOrProvince), data);
     if (!string.IsNullOrWhiteSpace(addressLine1)) { preferredAddress.AddressLine1 = addressLine1; }
     if (!string.IsNullOrWhiteSpace(addressLine2)) { preferredAddress.AddressLine2 = addressLine1; }
     if (!string.IsNullOrWhiteSpace(addressLine3)) { preferredAddress.AddressLine3 = addressLine1; }
     if (!string.IsNullOrWhiteSpace(addressLine4)) { preferredAddress.AddressLine4 = addressLine1; }
     if (!string.IsNullOrWhiteSpace(city)) { preferredAddress.City = city; }
     if (!string.IsNullOrWhiteSpace(country)) { preferredAddress.CountryCode = country; }
     if (!string.IsNullOrWhiteSpace(postalCode)) { preferredAddress.PostalCode = postalCode; }
     if (!string.IsNullOrWhiteSpace(stateProvince)) { preferredAddress.StateOrProvince = stateProvince; }
     var facet = source as AddressList ?? new AddressList(preferredAddress, "Preferred");
     return new FacetMapped(facetKey, facet);
     }
    }
    
2.  Sitecore.ListManagement.configファイルのsitecore/import/facetMapperセクションの下に、マッパーを登録します:
    
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore>
     <import>
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.CompositeFacetMapperCollection, Sitecore.ListManagement.XConnect.Web">
     <param resolve="true" type="Sitecore.Abstractions.BaseLog, Sitecore.Kernel"/>
     <facetMappers hint="list:Add">
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.ListSubscriptionMapper, Sitecore.ListManagement.XConnect.Web" />
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PreferredEmailFacetMapper, Sitecore.ListManagement.XConnect.Web" />
     <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PersonalInformationFacetMapper, Sitecore.ListManagement.XConnect.Web" />
     <!-- New extended address mapper registration -->
     <facetMapper type="MyProject.PreferredAddressFacetMapper, MyProject" />
     <!-- New extended address mapper registration -->
     </facetMappers>
     </facetMapper>
     </import>
    </configuration>
    
3.  Sitecore.ListManagement.configファイルでAddressesファセット名を追加して、マッピングするファセットのリストを拡張します。
    
    <!-- FACETS TO MAP
     The list of contact facets retrieved from XConnect to map data from a CSV file.
     Only fields that belong to facets listed here are mapped. All other fields are skipped.
    -->
    <setting name="ListManagement.Import.FacetsToMap" value="Emails|Personal|Addresses" />
    

> !注この例では、コンテンツエディタのDataFieldセクションにあるPreferredAddressFacetMapper項目に、AddressList面のプロパティのいずれかに関連するキーを含める必要があります。例えば、City、AddressLine1、CountryCode、などです。

## 連絡先リストにカスタムフィールドを表示する

連絡先リストにカスタムファセットを表示するには、[連絡先リストにも列を追加](https://doc.sitecore.com/xp/ja/users/104/sitecore-experience-platform/add-a-column-to-the-contacts-list.html "Add a column to the Contacts list")する必要があります。