Jun 30, 2023 09:44 AM
Hi Community,
I have interface with many layouts and with most, I have to allow users to (+ Add Records ) but then if they x out of that window it still creates an empty record and links it! how can I prevent this behavior and still give users the ability to link and or create new records from that button?
If users change their minds and decided not to create a new record and just click the X button without putting any data records still getting created!
Appreciate any input
Solved! Go to Solution.
Jun 30, 2023 11:04 AM - edited Jul 06, 2023 09:32 AM
Update, Airtable heard us and this has been fixed but ill share my work on this issue so maybe someone will benefit Old original comment:"Yup I figured, Thanks Scott, I solve it by creating automation that runs scrip when record created to check the minimum required fields, I used the below script on my "Rental table" to check the two mandatory start and end date filed, if these are empty the record will be deleted, I just have to create something similar for each table ."
Exept this didn't really work because the automation for record creation run immediately and doesn't give users a chance to finish editing and maybe enter the required fields, so my workaround was to make the automation check the record that created before the triggering record " the new record" and that's how if users mistakenly linked incomplete record it will get clean up next time they create new record. I had to create a check box(create) and get that updated to checked with a button so the automation wont clean these records that has that check box checked.
let table = base.getTable('Rentals');
let fields = await input.config();
let StartDate = fields.startdate;
let Enddate = fields.enddate;
let ID = fields.ID;
if (!StartDate || !StartDate) {
await table.deleteRecordAsync(ID);
}
//this didn't work because automation runs immediately and setTimeOut function is not supported, this was my workaround attempt before Airtable make it right
// record create automation to clean the previous record if "Create" checkbox was not checked.
let table = base.getTable('Rentals');
let fields = input.config();
let ID = fields.ID;
let Create = fields.Create;
let Created = fields.Created;
let lastCreatedRecord ;
let count = 0;
queryResult.records.forEach((record) => {
if (record.id !== ID && count < 2) {
lastCreatedRecord = record;
if (!lastCreatedRecord.getCellValue('Create')) {
table.deleteRecordAsync(lastCreatedRecord.id);
}
count++;
}
}
);
-------------------
//button code : to check the "Create" checkbox
let table = base.getTable('Rentals');
let fields = input.config();
let ID = fields.ID;
let queryResult = await table.selectRecordsAsync({
fields: ['Create', 'ID'],
});
let record = queryResult.getRecord(ID);
await table.updateRecordAsync(ID, {
"Create" : true
,
})
Jun 30, 2023 11:00 AM - edited Jun 30, 2023 11:00 AM
Unfortunately, there is no way to prevent those blank records from being created in Airtable.
You could potentially create a nightly automation that cleans up all the "orphaned" blank records by deleting them. However, Airtable's automations don't natively allow record deletion, so you would either need to write a custom Javascript to do that or use an external automation tool like Make.
Jun 30, 2023 11:04 AM - edited Jul 06, 2023 09:32 AM
Update, Airtable heard us and this has been fixed but ill share my work on this issue so maybe someone will benefit Old original comment:"Yup I figured, Thanks Scott, I solve it by creating automation that runs scrip when record created to check the minimum required fields, I used the below script on my "Rental table" to check the two mandatory start and end date filed, if these are empty the record will be deleted, I just have to create something similar for each table ."
Exept this didn't really work because the automation for record creation run immediately and doesn't give users a chance to finish editing and maybe enter the required fields, so my workaround was to make the automation check the record that created before the triggering record " the new record" and that's how if users mistakenly linked incomplete record it will get clean up next time they create new record. I had to create a check box(create) and get that updated to checked with a button so the automation wont clean these records that has that check box checked.
let table = base.getTable('Rentals');
let fields = await input.config();
let StartDate = fields.startdate;
let Enddate = fields.enddate;
let ID = fields.ID;
if (!StartDate || !StartDate) {
await table.deleteRecordAsync(ID);
}
//this didn't work because automation runs immediately and setTimeOut function is not supported, this was my workaround attempt before Airtable make it right
// record create automation to clean the previous record if "Create" checkbox was not checked.
let table = base.getTable('Rentals');
let fields = input.config();
let ID = fields.ID;
let Create = fields.Create;
let Created = fields.Created;
let lastCreatedRecord ;
let count = 0;
queryResult.records.forEach((record) => {
if (record.id !== ID && count < 2) {
lastCreatedRecord = record;
if (!lastCreatedRecord.getCellValue('Create')) {
table.deleteRecordAsync(lastCreatedRecord.id);
}
count++;
}
}
);
-------------------
//button code : to check the "Create" checkbox
let table = base.getTable('Rentals');
let fields = input.config();
let ID = fields.ID;
let queryResult = await table.selectRecordsAsync({
fields: ['Create', 'ID'],
});
let record = queryResult.getRecord(ID);
await table.updateRecordAsync(ID, {
"Create" : true
,
})