この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

DML オプションの設定

Database.DMLOptions オブジェクトで目的のオプションを設定することにより、挿入操作や更新操作の DML オプションを指定できます。操作の Database.DMLOptions を設定するには、sObject で setOptions メソッドをコールするか、これをパラメータとして Database.insert および Database.update メソッドに渡します。

DML オプションを使用して、次のことを指定できます。
  • 項目の切り捨て動作。
  • 割り当てルール情報。
  • 重複ルール情報。
  • メールの自動送信を許可するかどうか。
  • 表示ラベルのユーザロケール。
  • 部分的な完了を操作で許可するかどうか。

DMLOptions は、API バージョン 15.0 以降で保存された Apex にのみ使用できます。DMLOptions の設定は、Salesforce ユーザインターフェースからではなく、Apex DML を使用して実行されたレコード操作でのみ有効です。

allowFieldTruncation プロパティ

allowFieldTruncation プロパティでは、文字列の切り捨て動作を指定します。バージョン 15.0 より前の API に対して保存された Apex では、文字列に値を指定し、その値が大きすぎる場合、値は切り捨てられます。API バージョン 15.0 以降では、大きすぎる値が指定されると、操作は失敗し、エラーメッセージが返されます。allowFieldTruncation プロパティを使用すると、API バージョン 15.0 以降に対して保存された Apex の新しい動作ではなく、以前の動作である切り捨てを使用するように指定できます。

allowFieldTruncation プロパティは Boolean 値を使用します。true の場合、長すぎる文字列値を切り捨てます。これは API バージョン 14.0 以前の動作です。次に例を示します。
1Database.DMLOptions dml = new Database.DMLOptions();
2
3dml.allowFieldTruncation = true;

assignmentRuleHeader プロパティ

assignmentRuleHeader プロパティは、ケース、またはリード作成時に使用する割り当てルールを指定します。

Database.DMLOptions オブジェクトは、ケースおよびリードの割り当てルールをサポートしますが、取引先またはテリトリー管理の割り当てルールはサポートしません。

メモ

assignmentRuleHeader プロパティを使用すると、次のオプションを設定できます。
  • assignmentRuleID: ケースまたはリードの割り当てルールの ID。割り当てルールは有効または無効にできます。ID は、AssignmentRule sObject をクエリして取得することができます。assignmentRuleId が指定されている場合は、useDefaultRule を指定しないでください。値が適切な ID 形式 (15 文字または 18 文字の Salesforce ID) でない場合、コールは失敗し、例外が返されます。

    ケースの sObject の場合、assignmentRuleID DML オプションは API でのみ設定可能で、Apex による設定は無視されます。たとえば、有効または無効なルールの assignmentRuleIDexecuteanonymous() API コールで設定できますが、開発者コンソールからは設定できません。これはリードには適用されません。リードの場合、assignmentRuleID DML オプションは ApexAPI の両方で設定できます。

    メモ

  • useDefaultRule: ケースまたはリードにデフォルトの (有効な) 割り当てルールを使用するかどうかを示します。useDefaultRule が指定されている場合は、assignmentRuleId を指定しないでください。
次の例では、useDefaultRule オプションを使用します。
1Database.DMLOptions dmo = new Database.DMLOptions();
2dmo.assignmentRuleHeader.useDefaultRule= true;
3
4Lead l = new Lead(company='ABC', lastname='Smith');
5l.setOptions(dmo);
6insert l;
次の例では、assignmentRuleID オプションを使用します。
1Database.DMLOptions dmo = new Database.DMLOptions();
2dmo.assignmentRuleHeader.assignmentRuleId= '01QD0000000EqAn';
3
4Lead l = new Lead(company='ABC', lastname='Smith');
5l.setOptions(dmo);
6insert l;

組織に割り当てルールがない場合、API バージョン 29.0 以前では、useDefaultRuletrue に設定してケースまたはリードを作成すると、作成されるケースまたはリードは定義済みのデフォルトの所有者に割り当てられます。API バージョン 30.0 以降では、ケースまたはリードは未割り当てで、デフォルトの所有者に割り当てられません。

メモ

dupicateRuleHeader プロパティ

dupicateRuleHeader プロパティは、重複として識別されたレコードを保存できるかどうかを決定します。重複ルールは重複管理機能の一部です。

dupicateRuleHeader プロパティを使用すると、次のオプションを設定できます。
  • allowSave: 重複として識別されたレコードを保存できるかどうかを示します。
次の例は、重複と識別された取引先レコードを保存する方法を示します。重複エラーを反復処理する方法についての詳細は、DuplicateError クラスを参照してください。
1Database.DMLOptions dml = new Database.DMLOptions(); 
2dml.DuplicateRuleHeader.AllowSave = true;
3Account duplicateAccount = new Account(Name='dupe');
4Database.SaveResult sr = Database.insert(duplicateAccount, dml);
5if (sr.isSuccess()) {
6	System.debug('Duplicate account has been inserted in Salesforce!');
7}

emailHeader プロパティ

Salesforce ユーザインターフェースを使用して、次のようなイベントが発生した場合にメールを送信するかしないかを指定できます。
  • ケースまたは ToDo の新規作成
  • ケースメールの取引先責任者への変換
  • 新規ユーザのメール通知
  • リードキューのメール通知
  • パスワードのリセット

API バージョン 15.0 以降に対して保存された Apex で、Database.DMLOptions emailHeader プロパティを使用すると、Apex DML コードの実行によりイベントのいずれかが発生したときに送信されるメールに関する追加情報を指定できます。

emailHeader プロパティを使用すると、次のオプションを設定できます。
  • triggerAutoResponseEmail: リード、ケースに対して自動応答ルールをトリガするか (true)、トリガしないか (false) を示します。このメールは、ケースの作成やユーザパスワードのリセットなど、さまざまなイベントによって自動的にトリガすることができます。この値が true に設定されている場合、ケースが作成されると、ContactID に指定された取引先責任者のメールアドレスがあれば、メールはそのアドレスに送信されます。アドレスがない場合、メールは SuppliedEmail で指定されたアドレスに送信されます。
  • triggerOtherEmail: 組織外のメールをトリガするか (true)、トリガしないか (false) を示します。このメールは、ケースの取引先責任者の作成、編集、削除によって自動的にトリガされます。
  • triggerUserEmail: 組織内の��ーザに送信されるメールをトリガするか (true)、トリガしないか false) を示します。このメールは、パスワードのリセット、ユーザの新規作成、ToDo の作成または変更など、さまざまなイベントによって自動的にトリガされます。

    Apex でコメントをケースに追加した場合、triggerUserEmailtrue に設定されていても、組織内のユーザへのメールがトリガされません。

    メモ

自動送信メールは Salesforce ユーザインターフェースのアクションでトリガできますが、emailHeader の DMLOptions 設定は Apex コードで実行された DML 操作のみで有効になります。

次の例では、triggerAutoResponseEmail オプションが指定されます。
1Account a = new Account(name='Acme Plumbing');
2
3insert a;
4
5Contact c = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber', accountid=a.id);
6
7insert c;
8
9Database.DMLOptions dlo = new Database.DMLOptions();
10
11dlo.EmailHeader.triggerAutoResponseEmail = true;
12
13Case ca = new Case(subject='Plumbing Problems', contactid=c.id);
14
15database.insert(ca, dlo);
グループイベントによって Apex で送信されるメールには、追加の動作が含まれます。グループイベントとは、IsGroupEvent が true であるイベントです。EventAttendee オブジェクトは、グループイベントに招待されているユーザ、リード、または取引先責任者を追跡します。Apex を使用して送信されるグループイベントメールでは、次のような動作に注意してください。
  • ユーザに対するグループイベントの招待状の送信は、triggerUserEmail オプションの影響を受けます。
  • リードまたは取引先責任者に対するグループイベントの招待状の送信は、triggerOtherEmail オプションの影響を受けます。
  • グループイベントの更新または削除時に送信されるメールも、送信対象に基づき triggerUserEmailtriggerOtherEmail オプションの影響を受けます。

localeOptions プロパティ

localeOptions プロパティでは、Apex で返される表示ラベルの言語を指定します。値は、de_DE や en_GB など、有効なユーザロケール (言語および国) である必要があります。値は文字列で、文字数は 2 から 5 文字です。最初の 2 文字は常に、「fr」や「en」などの ISO 言語コードです。値がさらに国別に評価される場合、文字列はアンダースコア (_) に続き、「US」や「UK」などの ISO 国コードが続きます。たとえば、アメリカを示す文字列は「en_US」、カナダのフランス語圏を示す文字列は「fr_CA」です。

Salesforce がサポートする言語の一覧は、Salesforce オンラインヘルプのSalesforce がサポートする言語は?」を参照してください。

optAllOrNone プロパティ

optAllOrNone プロパティでは、部分的な完了を操作で許可するかどうかを指定します。optAllOrNonetrue に設定されている場合、レコードでエラーが発生すると、すべての変更はロールバックされます。このプロパティのデフォルトが false である場合、レコードにエラーがない限り、正常に処理されたレコードがコミットされます。このプロパティは、Salesforce API バージョン 20.0 以降で保存された Apex で使用できます。