improvements to the code
This commit is contained in:
@@ -45,6 +45,11 @@ async function initializeSalesforceConnection() {
|
||||
console.log('Salesforce connection is ready.');
|
||||
}
|
||||
|
||||
// Escape single quotes for SOQL queries (e.g., D'Angelo -> D\'Angelo)
|
||||
function escapeSoql(str) {
|
||||
return str ? str.replace(/'/g, "\\'") : '';
|
||||
}
|
||||
|
||||
// the pdf files contain the identifying ids of the users such as 'Codice Fiscale' (CF) and we use them to attach
|
||||
// the page/pages to the specific account that has that id. If CFs are not available we search based on the
|
||||
// name an lastname of the user
|
||||
@@ -79,11 +84,12 @@ async function attachPdfToAccount(sfdc) {
|
||||
const fullName = parts.join(' ');
|
||||
const reversedName = [...parts.slice(1), parts[0]].join(' ');
|
||||
|
||||
conditions.push(`Name='${fullName}'`);
|
||||
//conditions.push(`Name='${fullName}'`);
|
||||
if (fullName !== reversedName) {
|
||||
conditions.push(`Name='${reversedName}'`);
|
||||
conditions.push(`Name='${ escapeSoql(reversedName) }'`);
|
||||
}
|
||||
}
|
||||
conditions.push(`Name='${ escapeSoql(rawName) }'`);
|
||||
}
|
||||
|
||||
// use the soql command to search in the database
|
||||
@@ -192,7 +198,7 @@ async function splitExcelFile(inputFile) {
|
||||
})
|
||||
|
||||
// to store the names of the columns in columnNames
|
||||
worksheet.getRow(1).eachCell((cell, cell_num) => {
|
||||
worksheet.getRow(1).eachCell({ includeEmpty: true }, (cell, cell_num) => {
|
||||
columnNames.push(cell.value);
|
||||
})
|
||||
|
||||
@@ -200,7 +206,7 @@ async function splitExcelFile(inputFile) {
|
||||
for (let i = 2; i <= numRows + 1; i++) {
|
||||
let dataUser = {};
|
||||
worksheet.getRow(i)
|
||||
.eachCell((cell, cell_num) => {
|
||||
.eachCell({ includeEmpty: true }, (cell, cell_num) => {
|
||||
const rawColumnName = columnNames[cell_num - 1] || `column_${cell_num}`;
|
||||
|
||||
// 1. Trim whitespace and replace spaces with underscores
|
||||
@@ -273,7 +279,25 @@ async function splitPDF(numRows, inputFile) {
|
||||
}
|
||||
}
|
||||
|
||||
// cleans up temporary files from OS temp directory
|
||||
function cleanUp() {
|
||||
tempFilePath.forEach((file) => {
|
||||
try {
|
||||
if (fs.existsSync(file)) {
|
||||
fs.unlinkSync(file);
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
console.log(`Failed in deleting the temporary file ${ file }: `, err);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async function main() {
|
||||
if (!excelFile || !pdfFile) {
|
||||
console.error('Error: Please provide both Excel and PDF paths.\nUsage: node script.js <path-to-excel> <path-to-pdf>');
|
||||
process.exit(1);
|
||||
}
|
||||
const result = await splitExcelFile(excelFile);
|
||||
await splitPDF(result, pdfFile);
|
||||
const rl = readline.createInterface({ input, output });
|
||||
@@ -299,6 +323,7 @@ async function main() {
|
||||
}
|
||||
finally {
|
||||
rl.close();
|
||||
cleanUp();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user