How to Query Salesforce Attachments / Email Attachments / Chatter Feed Files using APEX?

12:20 PM

There are quite a few ways content (files) are stored in Salesforce. This article shows you ways to access them through a SOQL query.

EMAIL ATTACHMENT:

Let's consider the scenario where we have attachments against email messages related to a Case. Let's see how to query it in SOQL.

SOQL Query:
 Assuming case number 123

Case cs = [Select Id from Case where CaseNumber=123];
Map<Id,EmailMessage> caseEmails = new Map<Id,EmailMessage>([Select Id from EmailMessage where ParentId=:cs.Id and HasAttachment = true]);
Set<Id> caseRelatedIds = new Set<Id>();
if(caseEmails != null){
     caseRelatedIds.addAll(caseEmails.keySet());
}
List<Attachment> AttachedFiles = [SELECT Id, Name, Body, ContentType FROM Attachment WHERE ParentId IN :caseRelatedIds];

ATTACHMENTS against a Case:


Case cs = [Select Id from Case where CaseNumber=123];
List<Attachment> AttachedFiles = [SELECT Id, Name, Body, ContentType FROM Attachment WHERE ParentId IN =:cs.Id];

Salesforce Files Attached to a Case Feed:


Case cs = [Select Id from Case where CaseNumber=123];
List<CaseFeed> caseChatterFiles = [SELECT Id, Type, Body, Title, LinkUrl, ContentData, ContentSize, ContentFileName, ContentType From CaseFeed where Type = 'ContentPost' and parentId = :cs.Id];

1 comments