renderEmailTemplate()
構文
1RenderEmailTemplateResult = connection.renderEmailTemplate(RenderEmailTemplateRequest[] renderRequests);使用方法
renderEmailTemplate() コールは、カスタムテンプレートを使用したメールを sendEmail() コールで送信する場合の差し込み項目の表示に相当します。
renderEmailTemplate() コールの配列引数には最大 10 個の RenderEmailTemplateRequest 要素を指定でき、各 RenderEmailTemplateRequest には最大 10 個のテンプレート本文を含めることができます。各要求は配列内の他の要求から独立しており、1 つの要求でエラーが発生しても他の要求には影響しません。同様に、1 つのテンプレート本文でエラーが発生しても、同じ要求内の他のテキスト本文ではエラーになりません。
renderEmailTemplate() コールでは、差し込み項目が RenderEmailTemplateRequest の whatId または whoId の値に置き換えられます。
- 差し込み項目が人以外のオブジェクトを参照している場合は、whatId の対応する値に置き換えられます。たとえば、差し込み項目が取引先または商談を参照している場合、whatId の値に置き換えられます。
- 差し込み項目が人のオブジェクトを参照している場合は、whoId の対応する値に置き換えられます。たとえば、差し込み項目が取引先責任者、リード、またはユーザを参照している場合、whoId の値に置き換えられます。
差し込み項目に値がないと、対応するテンプレート本文について renderEmailTemplate() コールからエラーが返されます。たとえば、差し込み項目が空白または null で置き換えられると、エラーが返されます。
サンプルコード —Java
次のサンプルでは、renderEmailTemplate() コールで、すべての取引先責任者差し込み項目を、指定された whoId 引数の値で置き換えます。同様に、商談差し込み項目 ({!Opportunity.Name}) を、指定された whatId の値で置き換えます。このサンプルの 2 番目のテンプレート本文は不正な差し込み項目 ({!Contact.SNARF}) であるため、2 番目のテンプレートはエラーになります。ただし、要求を表示するテンプレート全体は成功します。
1public void renderTemplates(String whoId, String whatId)
2 throws ConnectionException, RemoteException, MalformedURLException {
3 // Array of three template bodies.
4 // The second template body generates an error.
5 final String[] TEMPLATE_BODIES = new String[] {
6 "This is a good template body {!Contact.Name}",
7 "This is a bad template body {!Opportunity.Name} {!Contact.SNARF} ",
8 "This is another good template body {!Contact.Name}"};
9
10 // Create request and add template bodies, whatId, and whoId.
11 RenderEmailTemplateRequest req = new RenderEmailTemplateRequest();
12 req.setTemplateBodies(TEMPLATE_BODIES);
13 req.setWhatId(whatId);
14 req.setWhoId(whoId);
15 // An array of results is returned, one for each request.
16 // We only have one request.
17 RenderEmailTemplateResult[] results = connection.renderEmailTemplate(
18 new RenderEmailTemplateRequest[] { req });
19 if (results != null) {
20 // Check results for our one and only request.
21 // Check request was processed successfully, and if not, print the errors.
22 if (!results[0].isSuccess()) {
23 System.out.println(
24 "The following errors were encountered while rendering email templates:");
25 for (Error err : results[0].getErrors()) {
26 System.out.println(err.getMessage());
27 }
28 } else {
29 // Check results for each body template and print merged body
30 RenderEmailTemplateBodyResult[] bodyResults = results[0].getBodyResults();
31 for( Integer i=0;i<bodyResults.length;i++) {
32 RenderEmailTemplateBodyResult result = bodyResults[i];
33 if (result.isSuccess()) {
34 System.out.println("\nMerged body: \n" + result.getMergedBody());
35 } else {
36 System.out.println("\nErrors were found for body[" + i + "]: ");
37 for (RenderEmailTemplateError err : result.getErrors()) {
38 System.out.println(err.getMessage() + " - Field name: "
39 + err.getFieldName());
40 }
41 }
42 }
43 }
44 }
45}最初の引数 (whoId) に有効な取引先責任者 ID を指定し、2 番目の引数 (whatId) に null を指定して、このサンプルを実行するとします。2 番目のテンプレートには、2 つのエラーが設定されます。最初のエラーは不正な差し込み項目が原因であり、2 番目のエラーは whatId が null であるために商談差し込み項目 ({!Opportunity.Name}) が見つからなかったことが原因です。応答は次のようになります。
1Merged body:
2This is a good template body Howard Jones
3
4Errors were found for body[1]:
5Field Contact.SNARF does not exist. Check spelling. - Field name: Contact.SNARF
6No value for the field: Opportunity.Name - Field name: Opportunity.Name
7
8Merged body:
9This is another good template body Howard JonesRenderEmailTemplateRequest
| 名前 | 型 | 説明 |
|---|---|---|
| templateBodies | string[] | {!Account.Phone} や {!Contact.Name} などの差し込み項目を含めることができるテキスト本文の配列。 |
| whatId | reference | 取引先、商談、キャンペーン、ケース、カスタムオブジェクトなどの人以外のオブジェクトを参照します。whatId は多態的です。つまり、ケースや商談など、複数の種別のオブジェクトを参照できる ID であるという意味です。 |
| whoId | reference | リード、取引先責任者、ユーザなど、人のオブジェクトを参照します。whoId は多態的です。つまり、複数の種別のオブジェクトを参照できる ID であるという意味です。 |
障害
renderEmailTemplate() から、次のいずれかの API 状況コードが返される場合があります。
EMAIL_TEMPLATE_MERGEFIELD_ACCESS_ERROR
EMAIL_TEMPLATE_MERGEFIELD_ERROR