ApexクラスからOFCのApexクラスを呼び出し、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"です。
|
execution name | 任意の実行名を設定します。OFC_Logレコードの「実行名」に保存されます。
|
戻り値一覧
変数名 | 戻り値 |
isSuccess | ファイル出力結果の成功・エラーを返します。
|
errorMessage | isSuccessがFalseの場合、エラー内容を返します。 |
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秒以内の範囲でバッチサイズを設定する必要があります。OFCの1ファイル処理時間は、OFC_Logレコードの「処理時間(秒)」を確認してください。
バッチサイズの目安
(60秒 – その他の処理時間) / OFCの1ファイル最大処理時間= バッチサイズ
例: OFCの1ファイルの最大処理時間が5秒、その他の処理が8秒のとき、バッチサイズは10
(60秒 - 8秒) / 5 = 10.4
OFC実行前に差し込み項目を更新する場合
OFC実行前にレコードを更新し、更新した値を差し込み項目に使用することはできません。OFC実行前に差し込み項目を更新する場合、レコード更新バッチとOFC実行バッチの2つのバッチを作成し、レコード更新バッチのfinishメソッドでOFC実行バッチを呼び出してください。
Apexバッチ備考
- バッチサイズは最大でも20以内に設定してください。
- OFCの1ファイル処理時間は一定とは限らないため、予期せずバッチのガバナ制限秒数を超える場合があります。予想より小さめのバッチサイズを設定してください。
- ガバナ制限秒数を超えた場合、「First error: Apex CPU time limit exceeded」のエラーが発生します。ガバナ制限エラー発生時は、アプリケーションでエラーをキャッチできないため、OFCの結果を返しません。また、OFC_Logレコードは保存されません。バッチの成功/エラーは、設定>Apexジョブより確認してください。
備考・制限事項
- Apex開発の知識が必要となります。Apex作成方法など、Apex開発については、お問い合わせサポート対象外です。