CRM SDK で電子メールで見込み客を取得するためのサンプル コードを提供してもらえますか? このように機能する組み込み関数はありますか?
Guid leadID = someLeadManager.GetByEmail(email);
CRM SDK で電子メールで見込み客を取得するためのサンプル コードを提供してもらえますか? このように機能する組み込み関数はありますか?
Guid leadID = someLeadManager.GetByEmail(email);
サービスを取得したと仮定すると、次のクエリを実行できます。
private Guid GetGuidByEmail(String email)
{
QueryExpression query = new QueryExpression
{
EntityName = "lead",
ColumnSet = new ColumnSet("emailaddress1"),
Criteria = new FilterExpression
{
Filters =
{
new FilterExpression
{
Conditions =
{
new ConditionExpression(
"emailaddress1", ConditionOperator.Equals, email)
}
}
}
}
};
Entity entity = service.RetrieveMultiple(query).Entities.FirstOrDefault();
if(entity != null)
return entity.Id;
return Guid.Empty;
}
ここで、電子メールの一部の一致をフィルター処理する必要がある場合は、クエリが短くなり、代わりに、このように LINQ を使用して選択を行うことができます。
private IEnumerable<Guid> GetGuidsByEmail(String email)
{
QueryExpression query = new QueryExpression
{
EntityName = "lead",
ColumnSet = new ColumnSet("emailaddress1")
};
IEnumerable<Entity> entities = service.RetrieveMultiple(query).Entities;
return entities
.Where(element => element.Contains("emailaddress1"))
.Where(element => Regex.IsMatch(element["emailaddress1"], email))
.Select(element => element.Id);
}
特定のメールがある見込み客を取得しますか? その場合、このようなことができます。
private EntityCollection GetLeadsWithEmail(
IOrganizationService service, String wantedEmailAddress)
{
QueryExpression query = new QueryExpression();
query.EntityName = "lead";
// the columns you want
query.ColumnSet = new ColumnSet() { AllColumns = true };
query.Criteria = new FilterExpression();
query.Criteria.FilterOperator = LogicalOperator.And;
query.Criteria.Conditions.Add(new ConditionExpression(
"emailaddress1", ConditionOperator.Equal, wantedEmailAddress));
return service.RetrieveMultiple(query);
}
これにより、emailaddress1 フィールドに wantEmailAddress を持つすべての見込み客が取得されます。次に、呼び出した場所から一致するものがあるかどうかを確認できます。
EntityCollection leadCollection = GetLeadsWithEmail(
service, "someone@example.com");
Entity entity = leadCollection[0];
おそらく、最初にコレクション内のエンティティの数を確認し、leadCollection.Entities.Count
そこから続行する必要があります。
MSDNのサンプルを次に示します。