---
title: "連絡先リスト"
slug: "contact-lists"
abstract: ""
---
# 連絡先リスト

連絡先リストの定義はSitecore.Marketing.Definitions.ContactLists.ContactListDefinitionManagerクラスによって管理されます。

## ContactListDefinitionManagerへのアクセス

ContactListDefinitionManagerはSitecore DIコンテナから利用可能です。クラスのコンストラクタに型DefinitionManagerBase<IContactListDefinition, ContactListDefinitionRecord>のパラメータを含め、コンテナからクラスを引き出すことで、コンテナがインスタンスを解決するのが望ましいです。

public MyClass(DefinitionManagerBase<IContactListDefinition, ContactListDefinitionRecord> contactListDefinitionManager)
{
 ...
}

If you cannot use the container to construct your class, you can use the service locator. This class is also available in the Sitecore DI container:

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;

ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

## 連絡先リストの定義

連絡先リストはSitecore.Marketing.Definitions.ContactLists名前空間のタイプを用いて定義されます。

using Sitecore.Marketing.Definitions.ContactLists;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Documentation
{
 public class AddContactList
 {
 public void Example()
 {
 Guid contactListId = Guid.NewGuid(); // Contact list ID
 CultureInfo contactListCulture = new CultureInfo("es"); // Contact list culture
 string contactListName = "Newly created contact list"; // Contact list name
 DateTime creationDate = DateTime.UtcNow; // Contact list creation date
 string createdBy = "sitecore\\admin"; // Contact list creator

 ContactListDefinition contactList = new ContactListDefinition(contactListId, "Contact list item name", contactListCulture, contactListName, creationDate, createdBy);

 contactList.Owner = "sitecore\\\\maw";
 contactList.Type = "Folder";
 }
 }
}

> !重要TypeとOwnerを除くすべてのContactListDefinitionプロパティは旧式化されていますが削除されていません。これはList Managerなどのコンポーネントの移行をサポートするためです。一部のプロパティは後のリリースで削除または移動される可能性があることに注意してください。

## 連絡先リストの保存

連絡先リストを定義したら、定義マネージャーのSaveAsync() メソッドを呼び出して保存できます。

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions.ContactLists;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;

namespace Documentation
{
 public class SaveContactList
 {
 public async void Example()
 {
 Guid contactListId = Guid.NewGuid(); // Contact list ID
 CultureInfo contactListCulture = new CultureInfo("es"); // Contact list culture
 string contactListName = "Newly created contactList"; // Contact list name
 DateTime creationDate = DateTime.UtcNow; // Contact list creation date
 string createdBy = "sitecore\\admin"; // Contact list creator

 ContactListDefinition contactList = new ContactListDefinition(contactListId, "Contact list item name", contactListCulture, contactListName, creationDate, createdBy);

 contactList.Owner = "sitecore\\\\maw";
 contactList.Type = "Folder";

 IDefinitionManager<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

 await manager.SaveAsync(contactList);
 }
 }
}

You can also optionally activate the contact list during save by passing \`true\` to the second parameter of the \`SaveAsync()\` method:

manager.SaveAsync(contactList, true);

## 連絡先リストの有効化

連絡先リストはExperience Manager外で使用可能になる前に有効化しなければなりません。連絡先リストは保存時にSaveAsync()メソッドのactivate(2つ目の)パラメータにtrueを渡すことで有効化できます。

manager.SaveAsync(contactList, true);

連絡先リストは、ActivateAsync() メソッドを使ってセーブを呼ばずに有効化することも可能です。

manager.ActivateAsync(contactListId);

ActivateAsync()方法は連絡先リストのIDを取り、連絡先リスト定義モデルを必要としません。

## 連絡先リストの削除

連絡先リストを削除するには、マネージャーのDelete() メソッドを使います。個々の文化は定義から削除できず、定義全体のみ削除できます。メソッド呼び出しに提供される文化は、null(デフォルト値)またはCultureInfo.InvariantCultureであるべきです。

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions.ContactLists;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;

namespace Documentation
{
 public class SaveContactList
 {
 public async void Example()
 {
 Guid contactListId = Guid.NewGuid(); // Contact list ID

 IDefinitionManager<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

 manager.Delete(contactListId);
 }
 }
}

## 連絡先リストを作成してください

単一の連絡先リストは、マネージャーのGet() 方法のいずれかを用いてIDで取得できます。

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions.ContactLists;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;

namespace Documentation
{
 public class GetContactList
 {
 public async void Example()
 {
 Guid contactListId = Guid.NewGuid(); // Contact list ID

 IDefinitionManager<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

 // Get 'en' contact list, including inactive versions
 manager.Get(contactListId, new CultureInfo("en"), true);
 }
 }
}

### 別名で連絡先リストを取得する

また、[別名](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/definition-aliases.html "Definition aliases")から連絡先リストを取得することもできます:

CultureInfo contactListCulture = new CultureInfo("fr-fr");
var contactListDefinitionByAlias = definitionManager.GetByAlias("My alias", contactListCulture);

## 既存の連絡先リストの更新

既存の連絡先リスト定義を更新するには、IDで連絡先リストを取得し、連絡先リストのプロパティを編集し、保存/有効化して使用してください:

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions.ContactLists;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;

namespace Documentation
{
 public class UpdateContactList
 {
 public async void Example()
 {
 Guid contactListId = Guid.NewGuid(); // Contact list ID

 IDefinitionManager<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

 // Get 'en' contact list, including inactive versions
 var contactList = manager.Get(contactListId, new CultureInfo("en"), true);

 contactList.Owner = "sitecore\\\\newowner";
 contactList.Name = "New name";

 manager.SaveAsync(contactList, true);
 }
 }
}

## すべての連絡先リストの取得

.GetAll()メソッドはマネージャーからすべての連絡先リストを取得するために使用できます。定義が多数存在する場合があるため、この方法はページングをサポートしています。返される値は結果の1ページ分です。

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions.ContactLists;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sitecore.Marketing.Definitions;
using Sitecore.Marketing.Core;

namespace Documentation
{
 public class GetAllContactList
 {
 public async void Example()
 {
 Guid contactListId = Guid.NewGuid(); // Contact list ID

 IDefinitionManager<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

 // Get 'en' contact list, including inactive versions
 var contactList = manager.Get(contactListId, new CultureInfo("en"), true);

 // Get All with defaults which will be first page, page size 20, latest active versions only
 ResultSet<DefinitionResult<IContactListDefinition>> contactLists = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IContactListDefinition, string>());

 // Get page 2
 ResultSet<DefinitionResult<IContactListDefinition>> page2contactLists = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IContactListDefinition, string>(pageNumber: 2));

 // Include inactive versions
 ResultSet<DefinitionResult<IContactListDefinition>> page1contactLists = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IContactListDefinition, string>(), true);
 }
 }
}

To access the results, use the \`DataPage\` property of the result.

IContactListDefinition contactList = page1contactLists.DataPage.ElementAt(0);

その結果には、定義の総数や現在のページインデックス、ページサイズを公開するプロパティも含まれています。

long totalDefinitionCount = contactLists.Total;
int pageNumber = page1contactLists.PageNumber;
int pageSize = contactLists.Count;