5-3-1. 個別に送信する
1件ずつ書類を個別に送信する Apex クラス実装例を示します。
例では、送信先の取引先責任者に対して、[ファイル] 関連リストにアップロードされた添付ファイルを送信します。
注意事項
この例を実行するには、ユーザ設定に Apex クラス実行ユーザのクラウドサインクライアント ID を保存しておく必要があります。
解説
ApiExecutor.beforeExecute() で送信に必要な事前設定をチェックします。
エラーがない場合は、送信先および添付ファイルの情報から ApiExecutor.Document オブジェクトを生成し、ApiExecutor.send() で書類を送信します。送信に成功すると、送信した書類情報がクラウドサイン管理に追加されます。
書類送信後、ApiExecutor.Result オブジェクトを確認し、成功した場合はクラウドサイン管理の追加属性(カスタム項目)の更新、失敗した場合はエラーメッセージの表示などを行います。
クラスやメソッドの詳細は、「API リファレンス」をご参照ください。
// 送信処理APIインスタンス生成 CloudSign.ApiExecutor apiExecutor = new CloudSign.ApiExecutor(); // 送信処理API実行前処理 List<String> messages = apiExecutor.beforeExecute(); if (messages.size() > 0) { System.debug(String.join(messages, '\r\n')); return; } // 取引先責任者を【送信先】にする Contact sendObject = [SELECT Id, AccountId FROM Contact WHERE Name = '山田 太郎' Limit 1]; // 送信先リスト List<CloudSign.ApiExecutor.Participant> participants = new List<CloudSign.ApiExecutor.Participant>(); // 【送信先】と同じ取引先の取引先責任者を送信先リストに追加 for (Contact contact : [SELECT Id, Name, Email, Account.Name FROM Contact WHERE AccountId = :sendObject.AccountId ORDER BY CreatedDate ASC]) { CloudSign.ApiExecutor.Participant participant = new CloudSign.ApiExecutor.Participant(); participant.setId(contact.Id); participant.setName(contact.Name); participant.setEmail(contact.Email); participant.setOrganization(contact.Account.Name); participants.add(participant); } // 添付ファイルリスト List<Id> contentVersionIds = new List<Id>(); // 【送信先】に関連付けられたファイルの最新バージョンを添付(ContentVersionのレコードIDをリストに追加) for (ContentDocumentLink contentDocumentLink : [SELECT Id, ContentDocument.LatestPublishedVersionId FROM ContentDocumentLink WHERE LinkedEntityId = :sendObject.Id ORDER BY ContentDocument.CreatedDate ASC]) { contentVersionIds.add(contentDocumentLink.ContentDocument.LatestPublishedVersionId); } // 書類 CloudSign.ApiExecutor.Document document = new CloudSign.ApiExecutor.Document(); document.setTitle('契約書の送付'); document.setAccessCode('3txqufj7o0'); document.setLanguageCode(CloudSign.ApiExecutor.MailLanguage.JAPANESE); document.setCanTransfer(false); document.setParticipants(participants); document.setContentVersionIds(contentVersionIds); // 送信パラメータ設定(【送信先】と書類情報を設定) CloudSign.ApiExecutor.SendParam sendParam = new CloudSign.ApiExecutor.SendParam(); sendParam.setSendObjectId(sendObject.Id); sendParam.setDocument(document); // 送信処理API実行 CloudSign.ApiExecutor.Result result = apiExecutor.send(sendParam); if (result.isSuccess()) { // 成功 System.debug('クラウドサイン管理レコードID:' + String.valueOf(result.getCloudSignControlId())); } else { // 失敗 // パラメータエラー for (String error : result.getParamErrors()) { System.debug(error); } // クラウドサインWebAPIレスポンス if (result.getApiResponse() != null) { CloudSign.ApiExecutor.ApiResponse response = result.getApiResponse(); System.debug('method:' + response.getMethod()); System.debug('endpoint:' + response.getEndpoint()); System.debug('code:' + response.getCode()); System.debug('error:' + response.getError()); System.debug('message:' + response.getMessage()); } // DML エラー if (result.getDmlErrors().size() > 0) { for (Database.Error error : result.getDmlErrors()) { System.debug('DMLError statusCode:' + error.getStatusCode()); System.debug('DMLError message:' + error.getMessage()); System.debug('DMLError fields:' + error.getFields()); } } }