Apex からCSVファイルを出力する【Salesforce】

clouds during sunset Apex
Photo by Soubhagya Maharana on Pexels.com

この記事では、Apex から CSV ファイルを出力し、「ファイル」タブから参照できる形で保存する方法を記述しています。

ContentVersion オブジェクトの使用

ファイルとして保存するためには ContentVersion オブジェクトを使用します。

経験則として、

  • ContentLocation を ‘S’ にしてユーザ実行することで、Salesforce のファイルタブ内「自分が所有者」のファイルとして保存されていました。
  • PathOnClient の最後を ‘.csv’ にすることで、CSVファイルとして保存されるようです。

実装例

ある取引先に紐づく取引先責任者の名前とメールアドレスを CSV 出力します。

List<Contact> contactList = [SELECT Name, Email FROM Contact WHERE AccountId = :AccId];
List<String> csvRowValues = new List<String>();
for(Contact con : contactList){
    String contactName = con.Name;
    String contactEmail = con.Email;
    String csvRow = '"' + contactName + '","' + contactEmail + '"';
    csvRowValues.add(csvRow);
}
String csvColumnHeader = 'コンタクト名, コンタクトメール \n';
String csvFile = csvColumnHeader + String.join(csvRowValues,'\n');

ContentVersion cv = new ContentVersion();
cv.ContentLocation = 'S'; // ファイルはSalesforce上に保存
String title = 'Title-';
cv.PathOnClient = title + Datetime.now() + '.csv'; // ファイル名
cv.Title = title + Datetime.now()+'.csv'; // ファイルタイトル
cv.VersionData = Blob.valueOf(csvFile);   // ファイルデータ
insert cv;

コメント

タイトルとURLをコピーしました