Can anyone figure out why im getting the following? My goal is when a record is updated with a CSV file, I want to convert the CSV file into a list of records that I can then use elsewhere. This is in conjunction with an automation.
CONSOLE.LOG
"Script started"
CONSOLE.LOG
"Record ID from input config:"
undefined
CONSOLE.ERROR
"No record ID provided in input config."
CODE BELOW SHOWN BELOW
console.log('Script started');
let tableName = 'Fabrication Package Members';
let attachmentFieldName = 'Assembly List';
// Function to parse CSV text into an array of objects
function parseCSV(csvText) {
const lines = csvText.split('\n');
const headers = lines[0].split(',').map(header => header.trim());
const records = lines.slice(1).map(line => {
const values = line.split(',').map(value => value.trim());
return headers.reduce((record, header, i) => {
record[header] = values[i];
return record;
}, {});
});
return records.filter(record => Object.values(record).some(value => value)); // Filter out empty records
}
// Main function to import CSV from attachment
async function importCSVFromAttachmentField(recordId) {
try {
// Validate the record ID
if (!recordId) {
throw new Error('Record ID is not provided');
}
// Get the table
let table = base.getTable(tableName);
// Get the record
let record = await table.selectRecordAsync(recordId);
if (!record) {
throw new Error('Record not found');
}
// Get the attachment field value
let attachmentField = record.getCellValue(attachmentFieldName);
if (!attachmentField || attachmentField.length === 0) {
console.log('Attachment field is empty');
return;
}
// Get the URL of the attachment file
let attachmentUrl = attachmentField[0].url;
// Fetch the CSV file
let response = await fetch(attachmentUrl);
if (!response.ok) {
throw new Error(`Failed to fetch CSV file: ${response.statusText}`);
}
let csvText = await response.text();
// Parse the CSV text into an array of objects
let records = parseCSV(csvText);
// Insert the records into the base
for (let rec of records) {
await table.createRecordAsync(rec);
}
console.log(`Imported ${records.length} records from attachment field.`);
} catch (error) {
console.error('Error importing CSV:', error);
}
}
// Get the record ID from the automation input
let inputConfig = input.config();
let recordId = inputConfig.recordId;
console.log('Record ID from input config:', recordId);
// Ensure record ID is provided
if (recordId) {
await importCSVFromAttachmentField(recordId);
} else {
console.error('No record ID provided in input config.');
}