A script to select the latest date from several fields

@Chem @moe
Hi, I have a table with 8 date fields. I need to update a 9th date field with the latest date value from the other 8. wondering about this, I cannot see any standard solution from equations or rules, so I tried a custom Javascript Pipe. When executing the code below in this pipe inside a table rule (create/edit record), it seems not to do anything, or not taking the maxDate value as a result. can you help me?

var date1 = ‘{value1}’;
var date2 = ‘{value2}’;
var date3 = ‘{value3}’;
var date4 = ‘{value4}’;
var date5 = ‘{value5}’;
var date6 = ‘{value6}’;
var date7 = ‘{value7}’;
var date8 = ‘{value8}’;

const arr = [
{date: date1},
{date: date2},
{date: date3},
{date: date4},
{date: date5},
{date: date6},
{date: date7},
{date: date8},
];

const maxDate = new Date(
Math.max(
…arr.map(element => {
return new Date(element.date);
}),
),
);

@Chem @moe
Hi, well after trying a bit and checking some webs, I got the pipe working! Whatever reason, the pipe value is -1 day of the max date, so I had to add +1 day to the max date. I hope it would be useful for others.

//Headers
var appId = ‘5nQxnE2rxY’;
var apiKey = ‘XXXXXXXX’;
var apiSecret = ‘XXXXXXXXXXXXXXXX’;

var date1 = ‘{value1}’;
var date2 = ‘{value2}’;
var date3 = ‘{value3}’;
var date4 = ‘{value4}’;
var date5 = ‘{value5}’;
var date6 = ‘{value6}’;
var date7 = ‘{value7}’;
var date8 = ‘{value8}’;

const arr = [
{date: date1},
{date: date2},
{date: date3},
{date: date4},
{date: date5},
{date: date6},
{date: date7},
{date: date8},
];

const maxDate = new Date(
Math.max(
…arr.map(element => {
return new Date(element.date);
}),
),
);

const date = new Date(maxDate);
date.setDate(date.getDate() + 1);

var settings = {
“method”: “POST”,
“headers”: {
‘X-Tadabase-App-id’: appId,
‘X-Tadabase-App-Key’: apiKey,
‘X-Tadabase-App-Secret’: apiSecret,
},
“payload”: {
‘field_421’: date,
},
};
UrlFetchApp.fetch(“https://api.tadabase.io/api/v1/data-tables/{tableId}/records/{recordId}”, settings)

1 Like

Excellent post, @Aprada; thanks!

Did you know that you can format code on our community by using three backtick ``` characters before and after the code?

It makes it easier for people to copy and paste code, and for some reason, when you don’t format it this way, the apostrophes get converted to invalid characters for code.

So whenever I add code to the community I add three backticks ```, press enter, paste the code, and then add another three backticks after the code.

//Headers
var appId = '5nQxnE2rxY';
var apiKey = 'XXXXXXXX';
var apiSecret = 'XXXXXXXXXXXXXXXX';

var date1 = '{value1}';
var date2 = '{value2}';
var date3 = '{value3}';
var date4 = '{value4}';
var date5 = '{value5}';
var date6 = '{value6}';
var date7 = '{value7}';
var date8 = '{value8}';

const arr = [
{date: date1},
{date: date2},
{date: date3},
{date: date4},
{date: date5},
{date: date6},
{date: date7},
{date: date8},
];

const maxDate = new Date(
Math.max(
…arr.map(element => {
return new Date(element.date);
}),
),
);

const date = new Date(maxDate);
date.setDate(date.getDate() + 1);

var settings = {
"method": "POST",
"headers": {
'X-Tadabase-App-id': appId,
'X-Tadabase-App-Key': apiKey,
'X-Tadabase-App-Secret': apiSecret,
},
"payload": {
'field_421': date,
},
};
UrlFetchApp.fetch("https://api.tadabase.io/api/v1/data-tables/{tableId}/records/{recordId}", settings)

Thanks for the tip!

1 Like