The code below is really long, sorry about that, I’m still cleaning up the functions.
My script isn’t running, it goes through the code as the console log tests return but none of the functions are working.
The last function I created was an async function called revExp that I’ve commented out incase that was the reason but it still isn’t working.
Any help would be appreciated.
let table = base.getTable('MASTER');
let tableTwo = base.getTable('Truck Breakdown');
let view = table.getView('Master View');
let viewTwo = tableTwo.getView('Grid view');
let tableThree = base.getTable('Customer Breakdown');
let viewThree = tableThree.getView('Grid view');
//records from Master file
let result = await view.selectRecordsAsync();
//records from By truck file
let resultTwo = await viewTwo.selectRecordsAsync();
//records from Customer breakdwon file
let resultThree = await viewThree.selectRecordsAsync();
const truck = "Truck No", customer = "Customer";
//read array for Truck No
function readArray(inputResult, typeOf)
{
let i = 0, returnArray = [];
for(let record of inputResult.records)
{
returnArray[i] = record.getCellValueAsString(typeOf);
i++;
}
return returnArray;
}
async function currentLargerThanMaster(current, newVal, resultNeeded)
{
for(let j = 0, k = current.length; j < k; j++)
{
for(let l = 0, m = newVal.length; l < m; l++)
{
if(newVal[l] === current[j])
{
let recordId = resultNeeded.records[j].id;
await tableThree.deleteRecordAsync(recordId);
}
}
}
}
async function addNewToCurrent(newVal, typeOf, tableNumber)
{
for(let j = 0, k = newVal.length; j < k; j++)
{
await tableNumber.createRecordAsync({typeOf: newVal[j]});
}
}
// async function revExp(current, inputResult, typeOf, table)
// {
// let expense, revenue, rec = 0;
// for(let i = 0; i < current.length; i++)
// {
// for(let record of inputResult.records)
// {
// if(record.getCellValueAsString(typeOf) == current[i])
// {
// if(record.getCellValueAsString("Trans. Type") == "Expense")
// {
// expense = record.getCellValue("Amnt") + expense;
// await table.updateRecordAsync(inputResult.records[i].id, {"Expense": expense});
// }
// else if(record.getCellValueAsString("Trans. Type") == "Revenue")
// {
// revenue = record.getCellValue("Amnt") + revenue;
// await table.updateRecordAsync(inputResult.records[i].id, {"Revenue": revenue});
// }
// if(record.getCellValueAsString("Receivable") == "Yes")
// {
// rec = record.getCellValue("Amnt") + rec;
// await table.updateRecordAsync(inputResult.records[i].id, {"Receivable": rec});
// }
// }
// }
// expense = 0, revenue = 0, rec = 0;
// }
// }
//fix this function. Does not make sense.
function byTruckSheet()
{
//Remove value from current sheet as it does not exist in master file
if(currentCustomer.length > customerName.length)
{
currentLargerThanMaster(currentCustomer, newValue, resultThree);
}
//add value to customer sheet as name does not exist
else if(currentCustomer.length <= customerName.length)
{
addNewToCurrent(newValue, customer, tableThree);
}
if(currentIDs.length > driverID.length)
{
currentLargerThanMaster(currentIDs, newValue, resultTwo);
}
else if(currentIDs.length <= driverID.length)
{
addNewToCurrent(newValue, truck, tableTwo);
}
}
//comapres value in a single array and returns unique values
const uniqueSingleArray = (readArray) =>
{
let returnArray = [];
for (var i=0, l=readArray.length; i<l; i++)
{
if (returnArray.indexOf(readArray[i]) === -1 && readArray[i] !== '')
{
returnArray.push(readArray[i]);
}
}
return returnArray;
}
//return unique contents
const haveSameContents = (masterArray, currentArray) =>
{
let retArray = [], i = 0;
for (const v of new Set([...currentArray, ...masterArray]))
{
if (masterArray.filter(e => e === v).length !== currentArray.filter(e => e === v).length)
{
retArray[i] = v;
i++;
}
}
return retArray;
}
console.log("Test");
//read driver IDs from Master file
let driverID = readArray(result, truck);
//return uniqe driver IDs from master file
driverID = uniqueSingleArray(driverID);
//read current driver IDs in truck file
let currentIDs = readArray(resultTwo, truck);
//compare Master and truck sheet for same values
let newValue = haveSameContents(driverID, currentIDs);
//read customer name from Master file
let customerName = readArray(result, customer);
customerName = uniqueSingleArray(customerName);
//read customer name from current sheet
let currentCustomer = readArray(resultThree, customer);
//compare master and customer sheet for same values
let newCustomer = haveSameContents(customerName, currentCustomer);
//Need to fix
byTruckSheet();
console.log("test 2");
//START OF PART 2
resultThree = await viewThree.selectRecordsAsync();
resultTwo = await viewTwo.selectRecordsAsync();
result = await view.selectRecordsAsync();
// read new reesults from current sheet
currentIDs = readArray(resultTwo, truck);
currentCustomer = readArray(resultThree, customer);
// revExp(currentIDs, result, truck, tableTwo);
// revExp(currentCustomer, resultThree, customer, tableThree);
console.log("Test 3");
//let fieldName = "Ali";
////const fieldId = await tableTwo.createFieldAsync(fieldName, "multilineText");
