新しいリードを追加し、Salesforceの既存のリードを更新する方法

StackOverflow https://stackoverflow.com/questions/3775654

  •  04-10-2019
  •  | 
  •  

質問

私はApex Developmentに初めてであり、Apexでのプロジェクトに取り組み始めています。フォローしたい:


電子メールサービスの使用//この部分を把握しました
電子メールからemailAddressを取得//これを行う方法を知っている
すでに既存のリードまたは同じ電子メールアドレスとの連絡がある場合
彼の情報を更新します
そうしないと
新しいリードを作成します


データベース(Saleforceのリードと連絡先)を検索し、既存のユーザーの情報を更新する方法を挙げたいと思います。

役に立ちましたか?

解決

クエリの基準としてメールアドレスを使用して、リードと連絡先のクエリを実行する必要があります。リードの0レコードと連絡先の0レコードを返した場合、新しいリードを作成します。

クエリは、リードまたは連絡先のいずれかで1つ以上の記録を返す可能性があるため、そのケースを処理するための戦略を開発する必要があります。電子メールアドレスは一意である必要はありません。

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<Lead> leads = [select id, email from Lead where email = :email];
    List<Contact> contacts = [select id, email from Contact where email = :email];
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

もう1つのオプションは、スコープを電子メールフィールドに制限する検索を実行することです。

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<List<SObject>> searchResults = [FIND :email IN Email Fields RETURNING 
                Lead(Id, FirstName, LastName), 
                Contact(Id, FirstName, LastName)];
    List<Lead> leads = ((List<Lead>)searchResults[0]);
    List<Contact> contacts = ((List<Contact>)searchResults[1]);
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

他のヒント

Salesforce内蔵で、いくつかを見つけることができます インバウンドメールオブジェクトに関する情報. 。このページには、メッセージから抽出されたメールアドレスに基づいて、連絡先とリードの作業に関する2つの例も含まれています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top