main();
function main(){
const tsv = configs.get('conf_tsv');
const dateFieldId = Number(configs.get('conf_dateFieldId'));
const dateFormat = configs.get('conf_dateFormat');
const conf_appendedTsv = configs.get('conf_appendedTsv');
const rowArray = tsv.trim().split('\n');
const cells = [];
let appendedTsv = '';
for(let i = 0 ; i < rowArray.length ; i++){
cells[i] = rowArray[i].split('\t');
cells[i].push(convertDateFormat(cells[i][dateFieldId], dateFormat));
appendedTsv += cells[i].join('\t');
appendedTsv += '\n';
}
if(conf_appendedTsv !== ''){
engine.setDataByNumber(conf_appendedTsv, appendedTsv.slice(0,-1));
}
}
/*
文字の日付を指定されたフォーマットに変換して文字で返す。
@param dateStr {string} (e.g. "yyyy" "yyyy-MM")
@param dateFormat {string} (e.g. "2022-11-01")
@return Date.parse() で解釈できない文字の場合、'' が返されます。
*/
function convertDateFormat(dateStr, dateFormat){
let date;
try{
date = new Date(dateStr);
return dateFormatter.format(dateFormat, date);
}catch(e){
engine.log(String(e));
engine.log('error: ' + dateStr + ' ('+ dateFormat +')');
return '';
}
}
/*
- 指定するフィールドの列IDはゼロからスタートします。
- 変換前の文字列は Date.parse() で解釈される場合に指定したフォーマットの日付文字列に変換されます。
- YYYY-MM-DDTHH:mm:ss.sssZ (e.g. "2022-10-10T12:34:56.789" "2022-10-10" etc.)
- 指定されたフィールドの値が適切に変換されなかった場合、空文字('')が追加されます。
- The column ID of the date field you specify starts at zero.
- The string before conversion is converted to a date string of the specified format when interpreted by Date.parse().
- If the value of the specified field is not properly converted, an empty character ('') is added.
*/