Salesforce技術ブログ(Apexでファイルを作成してフォルダ格納する)
いよいよ年末も近づき、久方ぶりの有明にも期待を寄せつつ中山では20年ぶりに偉大なる祖父の足跡をたどるかと期待の高まる今日この頃、 いかがお過ごしでしょうか。
ドーモ、ルルイエフクシゲです。
さて今回は、Apexでファイルを作成する処理について、ちょっと作ったので忘備代わりに記載します。
まずはこちらのコード。
//格納するライブラリの取得
ContentWorkspace cw = [SELECT Id FROM ContentWorkspace WHERE Name = '共有テスト' LIMIT 1];
//タイトル
String documentName = 'docTest-'+ Datetime.now();
//本体
String documentBody = 'テスト,csv';
Blob bodyBlob = Blob.valueOf(documentBody);
//ファイルの生成
ContentVersion doc = new ContentVersion(
Title=documentName,
PathOnClient =documentName + '.csv',
VersionData = bodyBlob,
FirstPublishLocationId = cw.Id
);
insert doc;
この結果、下の画像のようにライブラリのフォルダにファイルが格納されます。
というわけでちょっと解説
- ・ContentWorkspace
ファイルを格納するライブラリのsObject名。
- ・ContentVersion
ファイル本体のsObject。正確には連動してContentDocumentが作成され、そのバージョン1になる。
- ・Title
ファイル名
- ・PathOnClient
ファイルの拡張子を含む完全パス
- ・VersionData
ファイルの中身
- ・VersionData
ファイルの共有先。今回はライブラリを指定したのでライブラリに格納されている。
- 取引先などのオブジェクトを指定した場合、「メモ&添付ファイル」リストに表示されるが、
- 添付ファイル(Attachment)ではなくドキュメントの共有先(ContentDocument→ContentDocumentLink)の
- 扱いというところがちょっと注意を要するかと。
といった感じで超ざっくりですが作成したファイルの格納方法について、でした。
また何か思いついたらつらつらと書きたいと思います。では、オタッシャデー