Exporting documents from Salesforce libraries can be done in different ways:
- Weekly Export Service - standard service for exporting data. That’s and easy solution, but It may take much time for preparing and downloading all content.
- FileExporter - script, based on Data Loader for loading content. Good enough, but it doesn work with any version after 23.
Sometimes you may need a more custom solution to satisfy these requirements:
- Export all documents from a specific library
- Include all versions of the documents adding ‘-vN’ in the end of their titles, where N is a document verision.
This solution can be implemented using Eclipse IDE. So, here are the steps for that:
- Download Eclipse IDE
- Generate and download WSDL (follow instuctions on Introduction to the Force.com Web Services Connector wiki page)
- Create new Java project in Eclipse and include generated from WSDL jar and wsc-NN.jar and files in it.
- Follow the code below.
Development for Salesforce is not my primary duty (I'm a Salesforce admin), so the code below can be not so perfect as I'd like it to be :-)
Do not forget to replace values in USERNAME, PASSWORD and LIBRARY_ID constants.
package wsc;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import com.sforce.soap.enterprise.Connector;
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.soap.enterprise.QueryResult;
import com.sforce.soap.enterprise.sobject.ContentVersion;
import com.sforce.soap.enterprise.sobject.ContentWorkspaceDoc;
import com.sforce.soap.enterprise.sobject.SObject;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
public class Main {
static final String USERNAME = "USERNAME";
static final String PASSWORD = "PASSWORD+TOKEN";
static final String LIBRARY_ID = "LIBRARY/WORKSPACE ID";
static EnterpriseConnection connection;
public static void main(String[] args) {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(USERNAME);
config.setPassword(PASSWORD);
try {
connection = Connector.newConnection(config);
// display some current settings
System.out.println("Auth EndPoint: " + config.getAuthEndpoint());
System.out.println("Service EndPoint: "
+ config.getServiceEndpoint());
System.out.println("Username: " + config.getUsername());
System.out.println("SessionId: " + config.getSessionId());
System.out.println(System.getProperty("user.dir"));
// run the different examples
downloadContent();
} catch (ConnectionException e1) {
e1.printStackTrace();
}
}
// returns list of Document IDs from a library
private static ArrayList<String> getListOfDocuments(String libraryId) {
ArrayList<String> documentIDs = new ArrayList<String>();
try {
// pulling document IDs from ContentWorkspaceDoc
QueryResult queryDocumentIDs = connection
.query("select ContentDocumentId "
+ " from ContentWorkspaceDoc where ContentWorkspaceId = '"
+ LIBRARY_ID + "'");
ContentWorkspaceDoc[] cwd = Arrays.copyOf(queryDocumentIDs.getRecords(),
queryDocumentIDs.getSize(),
ContentWorkspaceDoc[].class);
if (cwd != null) {
for (int i = 0; i < cwd.length; i++) {
if (cwd[i].getContentDocumentId() != null) {
documentIDs.add(cwd[i].getContentDocumentId());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return documentIDs;
}
private static void downloadContent() {
try {
ArrayList<String> errorIDs = new ArrayList<String>();
// query for pulling all versions of a document
QueryResult queryAllVersions = new QueryResult();
// retrieving list of all documents from a library
ArrayList<String> documentIds = getListOfDocuments(LIBRARY_ID);
if (documentIds.size() != 0) {
for (int j = 0; j < documentIds.size(); j++) {
// get version of a document
queryAllVersions = connection
.query("select Id "
+ " from ContentVersion where ContentDocumentId = '"
+ documentIds.get(j) + "'");
SObject[] recordVersions = queryAllVersions.getRecords();
ArrayList<String> versionIDs = new ArrayList<>();
if (recordVersions != null) {
for (int i = 0; i < recordVersions.length; i++) {
if (recordVersions[i].getId() != null) {
versionIDs.add(recordVersions[i].getId());
}
}
}
QueryResult queryVersions;
ContentVersion contentVersion = new ContentVersion();
//exporting each version of document
for (String s : versionIDs) {
queryVersions = connection
.query("select Id, Title, ContentDocumentId, "
+ "ContentSize, FileType, VersionData, IsLatest, VersionNumber, "
+ "PathOnClient from ContentVersion where "
+ "Id = '" + s + "'");
SObject[] records = queryVersions.getRecords();
if (records != null) {
for (int i = 0; i < records.length; i++) {
contentVersion = (ContentVersion) records[i];
if (contentVersion.getContentSize() != 0) {
System.out
.println("Downloading Version Id:"
+ contentVersion.getId()
+ " Title:"
+ contentVersion.getTitle()
+ " ContentSize:"
+ contentVersion
.getContentSize());
int lastDot = contentVersion
.getPathOnClient().lastIndexOf('.');
try {
contentVersion
.setPathOnClient(contentVersion
.getPathOnClient()
.replaceAll("\\\\", ""));
File outputFile = new File(
"D://LoadedContent//"
+ contentVersion
.getTitle()
+ "-v"
+ contentVersion
.getVersionNumber()
+ contentVersion
.getPathOnClient()
.substring(
lastDot));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(outputFile));
bos.write(contentVersion
.getVersionData());
bos.flush();
bos.close();
} catch (Exception e) {
errorIDs.add(contentVersion
.getContentDocumentId()
.toString());
}
}
}
}
}
System.out.println("Export completed");
System.out.println("Document IDs with errors: ");
if (errorIDs.size() != 0) {
for (String s : errorIDs) {
System.out.println(s);
}
} else {
System.out.println('0');
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Mmorpg oyunlar
ОтветитьУдалитьinstagram takipçi satın al
tiktok jeton hilesi
Tiktok jeton hilesi
ANTALYA SAC EKİM
instagram takipçi satın al
instagram takipçi
Mt2 pvp serverlar
instagram takipçi satın al
Yeni perde modelleri
ОтветитьУдалитьNumara onay
Türk Telekom Mobil Ödeme Bozdurma
HTTPS://NFTNASİLALİNİR.COM
Ankara evden eve nakliyat
Trafik Sigortasi
dedektör
web sitesi kurma
Aşk kitapları
smm panel
ОтветитьУдалитьsmm panel
iş ilanları
İNSTAGRAM TAKİPÇİ SATIN AL
hirdavatciburada.com
BEYAZESYATEKNİKSERVİSİ.COM.TR
servis
Tiktok Hile