この記事では、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;
コメント