2024 서울마라톤 기록 입니다.
다음은 기록 페이지에서 기록 가지고 오는 Google Apps Script입니다.
참고 바랍니다.
function main() {
run(202450000005) // userdata for seoul marathon 2024
}
function run(userdata) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("test")
header = ["Name", "Bib", "Speed (km/h)", "Pace(min/km)", "5.0 km", "10.0 km", "15.0 km", "20.0 km", "25.0 km", "30.0 km", "35.0 km", "40.0 km", "42.195 km"];
// Bibs array
bibs = [10174, 24728, 18833, 16083, 15790, 18698, 18029, 18613, 20168, 19741, 26661, 20078, 18666, 20843 ];
mainSheet.appendRow(header);
for (var i=0;i<bibs.length; i++) {
data = importTableHTML(mainSheet, userdata, bibs[i]);
}
return data;
}
function importTableHTML(mainSheet, userdata, bib) {
var url = 'https://smartchip.co.kr/return_data_livephoto.asp?nameorbibno='+bib+'&Submit.x=0&Submit.y=0&usedata='+userdata
var html = '<table' + UrlFetchApp.fetch(url, {muteHttpExceptions: true}).getContentText().replace(/(\r\n|\n|\r|\t| )/gm,"").match(/(?<=\<table).*(?=\<\/table)/g) + '</table>';
var trs = [...html.matchAll(/<tr[\s\S\w]+?<\/tr>/g)];
var data = [];
var selectedData = [];
for (var i=0;i<trs.length;i++){
var tds = [...trs[i][0].matchAll(/<(td|th)[\s\S\w]+?<\/(td|th)>/g)];
var prov = [];
for (var j=0;j<tds.length;j++){
donnee=tds[j][0].match(/(?<=\>).*(?=\<\/)/g)[0].replace(/&/g,'&').replace(/ /g,' ');
prov.push(stripTags(donnee));
}
if(prov.toString().indexOf('Bib') > -1) {
strArray = prov.toString().trim().split(" ");
data.push(strArray[0]); //name
data.push(strArray[4]); // bib number
}
if(prov.toString().indexOf('Speed') > -1) {
strArray = prov.toString().trim().split(" ");
data.push(strArray[2]);
}
if(prov.toString().indexOf('Pace') > -1) {
strArray = prov.toString().trim().split(" ");
data.push(strArray[2]);
}
if(prov[0]=='Speed') {
data.push(prov[1]);
}
if(prov[0]=='Pace') {
data.push(prov[1]);
}
if(prov[4]=='5.0Km') {
data.push(prov[5]);
}
if(prov[0]=='10.0Km') {
data.push(prov[1]);
}
if(prov[0]=='15.0Km') {
data.push(prov[1]);
}
if(prov[0]=='20.0Km') {
data.push(prov[1]);
}
if(prov[0]=='25.0Km') {
data.push(prov[1]);
}
if(prov[0]=='30.0Km') {
data.push(prov[1]);
}
if(prov[0]=='35.0Km') {
data.push(prov[1]);
}
if(prov[0]=='40.0Km') {
data.push(prov[1]);
}
if(prov[0]=='42.2Km') {
data.push(prov[1]);
}
}
mainSheet.appendRow(data);
}
function stripTags(body) {
var regex = /(<([^>]+)>)/ig;
return body.replace(regex,"");
}
첫댓글 좋은 기록 모두 축하드려요~^^*