Created
January 30, 2020 07:03
-
-
Save Sunil02kumar/efc445404810df8094f76962aea8c805 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
string sessionId= UserInfo.getSessionID(); | |
string domainUrl=URL.getSalesforceBaseUrl().toExternalForm(); | |
system.debug('********domainUrl:'+domainUrl); | |
string objectId ='Contact'; //for custom objects, provide 15 digit or 18 digit object id | |
HttpRequest req = new HttpRequest(); | |
req.setHeader('Authorization', 'Bearer ' + sessionId); | |
req.setHeader('Content-Type', 'application/json'); | |
req.setEndpoint(domainUrl+'/services/data/v47.0/tooling/query/?q=select+id,SenderType,templateId+from+WorkflowAlert+where+EntityDefinitionId=\''+objectId+'\''); | |
req.setMethod('GET'); | |
Http h = new Http(); | |
HttpResponse res = h.send(req); | |
system.debug(res.getBody()); | |
List<string> workflowEmailAlertIds= new List<string>(); | |
String response=res.getBody(); | |
JSONParser parser = JSON.createParser(Response); | |
while (parser.nextToken() != null) { | |
if ((parser.getCurrentToken() == JSONToken.FIELD_NAME)){ | |
String fieldName = parser.getText(); | |
parser.nextToken(); | |
String fieldValue=parser.getText(); | |
if(fieldName == 'Id') { | |
workflowEmailAlertIds.add(fieldValue); | |
} | |
} | |
} | |
system.debug('***workflowEmailAlertIds size:'+workflowEmailAlertIds.size()); | |
system.debug('***workflowEmailAlertIds size:'+workflowEmailAlertIds); | |
string csvString='Workflow Email Alert Id,WorkFlow Email Alert Developer Name,Description,ccEmails,recipients,senderAddress,senderType,Email template Name,Email template Id\n'; | |
//as there is limit of 100 callouts in single transaction, I am restricting it to 90. Assuming there will not be more than | |
//90 email alert on single object | |
if(workflowEmailAlertIds.size()<90){ | |
for(string ss:workflowEmailAlertIds){ | |
system.debug('***workflowEmailAlertId :'+ss); | |
HttpRequest req = new HttpRequest(); | |
req.setHeader('Authorization', 'Bearer ' +sessionId ); | |
req.setHeader('Content-Type', 'application/json'); | |
req.setEndPoint(domainUrl+'/services/data/v41.0/tooling/sobjects/WorkflowAlert/'+ss); | |
req.setMethod('GET'); | |
Http h = new Http(); | |
HttpResponse res = h.send(req); | |
system.debug(res.getBody()); | |
String response=res.getBody(); | |
response = response.replace('type', 'type_z'); | |
response = response.replace('protected','protected_z'); | |
response = response.replaceAll(',\r\n','\r\n'); | |
SK_EmailAlertJSONParser emailAlertDetails=new SK_EmailAlertJSONParser(); | |
try{ | |
emailAlertDetails =(SK_EmailAlertJSONParser) System.JSON.deserialize(response, SK_EmailAlertJSONParser.class); | |
system.debug('******emailAlertDetails:'+emailAlertDetails); | |
csvString = csvString + emailAlertDetails.Id+ ',' + emailAlertDetails.DeveloperName.escapeCSV() + ','+ emailAlertDetails.Description.escapeCSV(); | |
string ccEmails =''; | |
if(emailAlertDetails.Metadata!=null){ | |
if(emailAlertDetails.Metadata.ccEmails.size()>0){ | |
ccEmails = string.join(emailAlertDetails.Metadata.ccEmails,','); | |
csvString = csvString + ','+ ccEmails.escapeCSV(); | |
}else{ | |
csvString = csvString + ','; | |
} | |
if(emailAlertDetails.Metadata.recipients!=null){ | |
if(emailAlertDetails.Metadata.recipients.size()>0){ | |
string recString=''; | |
for(SK_EmailAlertJSONParser.Recipients rec: emailAlertDetails.Metadata.recipients){ | |
recString = recString + rec.toString(); | |
} | |
csvString = csvString + ','+ recString.escapeCSV(); | |
system.debug('****recipients:'+recString); | |
}else{ | |
csvString = csvString + ','; | |
} | |
}else{ | |
csvString = csvString + ','; | |
} | |
if(emailAlertDetails.Metadata.senderAddress!=null){ | |
csvString = csvString + ','+ emailAlertDetails.Metadata.senderAddress.escapeCSV() ; | |
}else{ | |
csvString = csvString + ','; | |
} | |
if(emailAlertDetails.Metadata.senderType !=null){ | |
csvString = csvString + ','+ emailAlertDetails.Metadata.senderType.escapeCSV() ; | |
}else{ | |
csvString = csvString + ','; | |
} | |
if(emailAlertDetails.Metadata.template !=null){ | |
csvString = csvString + ','+ emailAlertDetails.Metadata.template.escapeCSV() ; | |
}else{ | |
csvString = csvString + ','; | |
} | |
} | |
csvString = csvString + ','+emailAlertDetails.TemplateId+'\n'; | |
}catch(exception ex){ | |
system.debug('****exception for email alertid-'+ss); | |
csvString = csvString +ss+','+ex.getmessage().escapeCSV()+'\n'; | |
} | |
} | |
} | |
Messaging.EmailFileAttachment csvAtt = new Messaging.EmailFileAttachment(); | |
blob csvBlob = Blob.valueOf(csvString); | |
csvAtt.setFileName(domainUrl+'-Email Alerts info for '+objectId+'.csv'); | |
csvAtt.setBody(csvBlob); | |
Messaging.SingleEmailMessage email =new Messaging.SingleEmailMessage(); | |
String[] toAddresses = new list<string> {UserInfo.getUserEmail()}; | |
string subject=domainUrl+'-Email Alerts info for '+objectId; | |
email.setSubject(subject); | |
email.setToAddresses( toAddresses ); | |
email.setPlainTextBody(subject); | |
email.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAtt}); | |
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { email }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// =========================================================================== | |
// Entity: SK_EmailAlertJSONParser | |
// Author: Sunil Kumar | |
// Purpose: wrapper class to parse emailalert response JSON using tooling api | |
// '/services/data/v47.0/tooling/sobjects/WorkflowAlert/01W380000xxxxbs' | |
// =========================================================================== | |
public class SK_EmailAlertJSONParser { | |
public string Id; | |
public String CcEmails ; | |
public String Description ; | |
public String DeveloperName ; | |
public String SenderType ; | |
public String EntityDefinitionId ; | |
public Metadata Metadata ; | |
public String FullName ; | |
public string TemplateId; | |
public class Metadata { | |
public List<String> ccEmails ; | |
public String description ; | |
public Boolean protected_Z ;// in json: protected | |
public List<Recipients> recipients ; | |
public String senderAddress ; | |
public String senderType ; | |
public String template ; | |
public Object urls ; | |
} | |
public class Recipients { | |
public String field ; | |
public Object recipient ; | |
public String type_Z ;// in json: type | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment