
【Salesforce】LGForce で生成した PDF をファイルに保存する【帳票ツール】
2024/09/13
はじめに
本記事では、シンプルな Salesforce 帳票ツールである LGForce で、生成した PDF を Salesforce のファイルストレージに保存しておく方法を解説します。
LGForce では生成された PDF ファイルはどこに保存されるのか?
LGForce は Excel 形式のテンプレートに Salesforce のレコードの値を差し込んで PDF に変換してダウンロードできますが、 そのままでは変換されたファイルがどこかに保存されることはありません。
LGForce のサービス側にもファイルが保存されることはなく、変換後もファイルはただちに削除されます。 (セキュリティやリソース管理の観点からそのような設計にしています)
LGForce のフローにファイル保存アクションを組み合わせる
LGForce 呼び出しに使うアクションは、オプションとして PDF 変換をかけるかかけないか、ダウンロードを実行するかしないかを選択できます。

そして、ダウンロードをする場合でもしない場合でも結果のファイルを base64 形式で出力します。base64 というのは、ファイルなどのバイナリデータを英数字と一部の記号のみのテキストで表現する形式で、Salesforce の Apex クラスでこれを読み込んでファイルストレージにファイルとして保存することができます。
そのためのアクションは、実は LGForce の資材の中に既に用意されています。そのアクション「LGF_FileRegisterAction」をフローに組み込むだけです。

フローを組み込んで PDF 変換をかけてみると、ダウンロードが行われず、Salesforce のファイルに保存されたことが確認できます。

【応用】保存されたファイルに会社名などの情報を追加登録する
さらなる応用として、Salesforce のコンテンツバージョンにカスタム項目を用意しておくことで、保存したファイルに会社名などの追加情報を登録したり、保存したファイルをレコードに紐づけたりすることができます。
「LGF_FileRegisterAction」は保存したファイルのコンテンツバージョン ID やコンテンツドキュメント ID を出力できます。
これを使って、以下のようにフローに「レコード更新」アクションを追加できます。

動かしてみると、登録されたファイルに会社名が追記されていることが確認できます。

また、今回はファイルをレコードに紐づける手順もやってみます。ファイルをレコードに紐づけるには、「コンテンツドキュメントリンク」というレコードを作成することで実現できます。

動かしてみると、登録されたファイルがレコードに紐づいていることが確認できます。

まとめ
本記事では、LGForce で生成した PDF を Salesforce のファイルストレージに保存する方法を解説しました。 実際の運用では毎回ファイルストレージに保存するとストレージを圧迫しかねませんが、 適宜ほかのストレージに移送するなど、いろいろやりようはあるかと思います。