Skip to content

Instantly share code, notes, and snippets.

@siddharatha
Created May 20, 2014 14:47
Show Gist options
  • Save siddharatha/c395b4fadea118d016a8 to your computer and use it in GitHub Desktop.
Save siddharatha/c395b4fadea118d016a8 to your computer and use it in GitHub Desktop.
Using a combination of salesforce Read metadata and listMetadata to get an csv export of access information of report folders. used jsforce for all the necessary calls.
var jsforce = require('jsforce');
var fs = require('fs');
var conn = new jsforce.Connection({
// use loginUrl : 'https://login.salesforce.com' for production
loginUrl : 'https://test.salesforce.com'
});
conn.login('yourusername', 'yourpassword+securitytoken', function(err, userInfo) {
if (err) { return console.error(err); }
// Now you can get the access token and instance URL information.
// Save them to establish connection next time.
console.log(conn.accessToken);
console.log(conn.instanceUrl);
// logged in user property
console.log("User ID: " + userInfo.id);
console.log("Org ID: " + userInfo.organizationId);
// ...
var reportfolders=[];
var csvstring=[];
fs.writeFile('oldModel.csv','"fullName","accessType","publicFolderAccess","Name","sharedToType"\n',function(err){});
conn.metadata.list([{type:'ReportFolder'}],'30.0',function(err,result){
for(var i=0;i<result.length;i++)
{
reportfolders.push(result[i].fullName);
if(reportfolders.length==10){
conn.metadata.read('ReportFolder', reportfolders, function(err, metadata) {
if (err) { console.error(err); }
if(metadata!=undefined && metadata.hasOwnProperty('length')){
for (var j=0; j < metadata.length; j++) {
var meta = metadata[j];
if(meta!=undefined && meta.hasOwnProperty('accessType'))
{
var resultstr='';
if(meta.hasOwnProperty('sharedTo'))
{
if(meta.sharedTo.hasOwnProperty('group'))
resultstr+=['"'+meta.fullName+'"','"'+meta.accessType+'"','"'+meta.publicFolderAccess+'"','"'+meta.name+'"',"group",'"'+meta.sharedTo.group+'"'].join(',')+'\n';
if(meta.sharedTo.hasOwnProperty('portalRole'))
resultstr+=['"'+meta.fullName+'"','"'+meta.accessType+'"','"'+meta.publicFolderAccess+'"','"'+meta.name+'"',"portalRole",'"'+meta.sharedTo.portalRole+'"'].join(',')+'\n';
if(meta.sharedTo.hasOwnProperty('portalRoleAndSubordinates'))
resultstr+=['"'+meta.fullName+'"','"'+meta.accessType+'"','"'+meta.publicFolderAccess+'"','"'+meta.name+'"',"portalRoleAndSubordinates",'"'+meta.sharedTo.portalRoleAndSubordinates+'"'].join(',')+'\n';
if(meta.sharedTo.hasOwnProperty('role'))
resultstr+=['"'+meta.fullName+'"','"'+meta.accessType+'"','"'+meta.publicFolderAccess+'"','"'+meta.name+'"',"role",'"'+meta.sharedTo.role+'"'].join(',')+'\n';
if(meta.sharedTo.hasOwnProperty('roleAndSubordinates'))
resultstr+=['"'+meta.fullName+'"','"'+meta.accessType+'"','"'+meta.publicFolderAccess+'"','"'+meta.name+'"',"roleAndSubordinates",'"'+meta.sharedTo.roleAndSubordinates+'"'].join(',')+'\n';
if(meta.sharedTo.hasOwnProperty('roleAndSubordinatesInternal'))
resultstr+=['"'+meta.fullName+'"','"'+meta.accessType+'"','"'+meta.publicFolderAccess+'"','"'+meta.name+'"',"roleAndSubordinatesInternal",'"'+meta.sharedTo.roleAndSubordinatesInternal+'"'].join(',')+'\n';
}
fs.appendFile('oldModel.csv', resultstr, function (err) {});
}
}
}
});
reportfolders=[];
}
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment