スプレッドシートに外部から日付データを入力するとき、38575みたいなシリアル値がたまに入力されたり、テキスト形式で入力されるとカスタム日時のフォーマットが適用されないので、下記コードで日時データに変換してみました。
L列に日付が入ってるものとします。
// 生年月日をテキスト形式からDateに変換
function updateStudentBirthday(){
let ss = SpreadsheetApp.getActiveSpreadsheet();
const datash = ss.getSheetByName('master');
const lastRow = datash.getLastRow();
const data = datash.getRange('L:L').getValues();
// console.log(data);
let line_number = 1;
data.forEach((line)=>{
const d = line[0];
if(d!==""){
const type = typeof d;
// console.log(d,type);
// console.log(d.indexOf('/'))
let date = '';
if(type=='string' && line_number!==1){
if(d.indexOf('/')!==-1){
const time = Date.parse(d);
date = new Date(time);
// console.log(d,date,type);
}else{
date = dateFromSn(d);
}
}else if(type=='number'){
date = dateFromSn(d);
}
// console.log(date)
if(date!='') datash.getRange("L"+line_number).setValue(date);
}
line_number++;
});
}
function dateFromSn(serialNumber){ // シリアル値→UNIX時間(ミリ秒)
var COEFFICIENT = 24 * 60 * 60 * 1000; //日数とミリ秒を変換する係数
var DATES_OFFSET = 70 * 365 + 17 + 1 + 1; //「1900/1/0」~「1970/1/1」 (日数)
var MILLIS_DIFFERENCE = 9 * 60 * 60 * 1000; //UTCとJSTの時差 (ミリ秒)
const ut = (serialNumber - DATES_OFFSET) * COEFFICIENT - MILLIS_DIFFERENCE;
return new Date(ut);
}
下記の郵便番号と電話番号の整形も参考にしてみてください。