Apexクラスから呼び出し(PDF)

ApexクラスからOFCApexクラスを呼び出し、PDFファイルを保存します。ファイル形式はPDFのみ対応しています。

※本機能はOffice File Creator Proで使用可能です。

 

Apexクラス呼び出し方法

  • Apexクラス内より、OFC Apexクラス「ofc2.OFCSavePDF」のexecuteメソッドを呼び出します。
  • パラメータはofc2.OFCSavePDF.Requestsクラスで、戻り値はofc2.OFCSavePDF.Resultsクラスです。
  • エラーの詳細を把握するため、出力ログの保存はオンにしてください。

 

パラメータ一覧

変数名 設定内容
recordId レコードId
template OFC_TemplateレコードのテンプレートAPI
save (file/att *default is file) ファイルの出力方法を設定します。デフォルトは"file"です。

  • file・・・Salesforceにレコード添付でファイル(File)として保存
  • att・・・Salesforceにレコード添付でメモと添付ファイル(Attachment)として保存
execution name 任意の実行名を設定します。OFC_Logレコードの「実行名」に保存されます。

  • 呼び出し元のフロー名
  • OFCアクションを実行後、後続処理を実行する場合、OFC_Logレコードのトリガーフローなどにより実行します。トリガーフローの条件判定などに実行名を使用します。

 

戻り値一覧

変数名 戻り値
isSuccess ファイル出力結果の成功・エラーを返します。

  • True・・・成功
  • False・・・失敗
errorMessage isSuccessFalseの場合、エラー内容を返します。
filename ファイル名(拡張子あり)
fileNameWithoutExtension ファイル名(拡張子なし)
fileExtension ファイル拡張子
contentDocumentId パラメータのsave"file"の場合、ContentDocumentオブジェクトのレコードIdを返します。
contentDocumentVesionId パラメータのsave"file"の場合、ContentVersionオブジェクトのレコードIdを返します。
attachmentId パラメータのsave"att"の場合、AttachmentオブジェクトのレコードIdを返します。
log Id OFC_LogレコードIdを返します。OFC_Templateレコードの「ログ保存」がチェックオンの場合に結果を返します。

 

 

サンプルコード

ofc2.OFCSavePDF.Requests req = new ofc2.OFCSavePDF.Requests();
req.recordId = 'xxxxxx';
req.templateApiName = 'OpportunityInvoice';
req.executionName = 'Call From Apex';
ofc2.OFCSavePDF.Results result = ofc2.OFCSavePDF.execute(req);
System.debug('result=' + result);

 

 

Apexバッチ

バッチサイズ

OFC処理とその他の処理の合計時間が60秒以内の範囲でバッチサイズを設定する必要があります。OFC1ファイル処理時間は、OFC_Logレコードの「処理時間()」を確認してください。

 

バッチサイズの目安

(60秒 – その他の処理時間) / OFC1ファイル最大処理時間= バッチサイズ

 

: OFC1ファイルの最大処理時間が5秒、その他の処理が8秒のとき、バッチサイズは10

(60 - 8) / 5 = 10.4

 

 

OFC実行前に差し込み項目を更新する場合

OFC実行前にレコードを更新し、更新した値を差し込み項目に使用することはできません。OFC実行前に差し込み項目を更新する場合、レコード更新バッチとOFC実行バッチの2つのバッチを作成し、レコード更新バッチのfinishメソッドでOFC実行バッチを呼び出してください。

 

 

Apexバッチ備考

  • バッチサイズは最大でも20以内に設定してください。
  • OFC1ファイル処理時間は一定とは限らないため、予期せずバッチのガバナ制限秒数を超える場合があります。予想より小さめのバッチサイズを設定してください。
  • ガバナ制限秒数を超えた場合、「First error: Apex CPU time limit exceeded」のエラーが発生します。ガバナ制限エラー発生時は、アプリケーションでエラーをキャッチできないため、OFCの結果を返しません。また、OFC_Logレコードは保存されません。バッチの成功/エラーは、設定>Apexジョブより確認してください。

 

 

備考・制限事項

  • Apex開発の知識が必要となります。Apex作成方法など、Apex開発については、お問い合わせサポート対象外です。