Apexでレコードを追加するには?

Salesforceの開発で避けて通れないのが、「Apexによるレコードの追加処理」です。たとえば、ある処理によって生成された情報をもとに、取引先責任者(Contact)を新たに登録したい──そんな場面で、Apexコードをどのように記述すればよいのでしょうか?本記事では、基本的な構文から注意点までを具体例を交えて解説します。すぐに使えるサンプルコードも掲載していますので、ぜひご活用ください。


目次

💻 Apexで取引先責任者(Contact)レコードを追加する

Salesforceの開発では、Apexを用いてレコードを作成・登録(追加)することがよくあります。
今回は「取引先責任者(Contact)」オブジェクトを例に、基本的なレコード追加の方法と、実務で気をつけるポイントを解説していきます。

➕ 基本構文:1件のレコードを追加する

まずは、Contactオブジェクトの1件のレコードを作成して追加(insert)する最も基本的な方法です。

Contact c = new Contact(
    FirstName = 'Hanako',
    LastName = 'Yamada',
    Email = 'hanako.yamada@example.com'
);
insert c;

このコードでは、

  • new Contact(...) で、新しいContactインスタンスを作成
  • insert 命令で、実際にレコードをデータベースに保存しています。

このように、Apexでは「オブジェクトのインスタンスを作成してから、DML操作(Data Manipulation Language)で保存する」という流れが基本です。

⚠️ 必須項目に注意しよう

Salesforceのオブジェクトには、必須項目(required fields)が設定されていることがあります。
たとえば、Contactの場合は LastName(姓) が必須です。

Contact c = new Contact(
    Email = 'hanako.yamada@example.com'
);
insert c; // → これはエラーになります!

このコードは LastName を指定していないため、insert時にバリデーションエラーが発生します
実際の開発では、オブジェクトのレイアウトや設定画面で必須項目を事前に確認しておくことが大切です。

🔗 取引先(Account)との関連付け

ContactはAccount(取引先)と主従関係にあるため、関連付けたい場合は AccountId を指定します。

Contact c = new Contact(
    FirstName = 'Hanako',
    LastName = 'Yamada',
    Email = 'hanako.yamada@example.com',
    AccountId = '001XXXXXXXXXXXXXXX' // 既存のAccountのID
);
insert c;

AccountId は有効なID(15桁 or 18桁)である必要があります。
存在しないIDや誤った形式を指定すると、やはりエラーになります。
実務では、事前にAccountを検索してそのIDを取得する処理を加えることが多いです。

🐛 エラーハンドリング(try-catch)

DML操作は失敗することもあるため、例外処理(エラーハンドリング)はとても重要です。
insertに失敗した場合でも、アプリケーションが落ちないようにしておきましょう。

try {
    insert c;
} catch (DmlException e) {
    System.debug('エラーが発生しました: ' + e.getMessage());
}

このように try-catch 文を使えば、エラー発生時に詳細をログに出力したり、画面にメッセージを表示することができます。

🗂️ 複数レコードを一括追加するには?

複数のContactを同時に追加したい場合は、リストを使ってまとめて insert することができます。

List<Contact> contactList = new List<Contact>();

contactList.add(new Contact(
    FirstName = 'Taro',
    LastName = 'Tanaka',
    Email = 'taro.tanaka@example.com'
));

contactList.add(new Contact(
    FirstName = 'Jiro',
    LastName = 'Suzuki',
    Email = 'jiro.suzuki@example.com'
));

insert contactList;

DML操作は回数が増えるとガバナ制限に引っかかる可能性があります。
可能な限りバルク処理(リストでまとめてinsert)を行うのがベストプラクティスです。


🌟 ノックスの格言

「レコードの作成は、ただの追加ではない。
 それは新たな“関係”と“責任”の始まりなのです」
(銀河歴8221年 ネクタリス・オーヴァ大学 データ創造論 講義より)

(英語訳:”Creating a record is more than an action—it’s the beginning of new relationships and responsibilities.”)
(原語訳:”Velantri vos nemath, kai’si durian; shal’na feras ka’theliin om’rei troval.”)

💡 さやかの学びメモ

new Contact(...) で下書き作成、insert で保存!
 → コードでも“新規レコード作成”できるって、ちょっと魔法っぽい✨

必須項目(例:LastName)を忘れるとエラー!
 → 名前がないと登録できない…現実と一緒ですね!(焦)

関連づけたい取引先があるときは AccountId を指定!
 → 所属先がわからないと、さまよう取引先責任者になっちゃう…!


では、また次回の 異星人Salesforce講座 でお会いしましょう!👽✨

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次