0

私は Apex 開発に不慣れで、Apex で自分のプロジェクトに取り組み始めています。私は次のことをしたいと思います:


メール サービスを使用する //この部分
は、メールから emailAddress を取得することを理解しました //
既存の見込み客または同じ emailAddress の連絡先がある場合は、これを行う方法を知っています
彼の情報を更新し、
それ以外の場合
は新しい見込み客を作成します


データベース (saleforce のリードと連絡先) を検索し、既存のユーザーの情報を更新する方法を教えてください。

4

2 に答える 2

2

クエリの条件として電子メール アドレスを使用して、見込み客と連絡先に対してクエリを実行する必要があります。見込み客のレコードが 0 件、連絡先のレコードが 0 件返された場合は、新しい見込み客を作成します。

クエリは、見込み客または連絡先のいずれかに対して複数のレコードを返す可能性があるため、そのケースを処理するための戦略を開発する必要があります。メールアドレスは一意である必要はありません。

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.');
    }
}

}

于 2010-10-14T23:06:02.493 に答える
0

Salesforce の組み込みヘルプで、InboundEmail オブジェクトに関する情報を見つけることができます。このページには、メッセージから抽出された電子メール アドレスに基づいて取引先担当者と見込み客を操作する 2 つの例も含まれています。

于 2010-09-23T05:44:14.007 に答える