Created
March 31, 2018 14:18
-
-
Save jnduli/9805e638c5da083070df033592fb1b13 to your computer and use it in GitHub Desktop.
Google Sheets function to calculate time averages and best times
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Averages time provide in formate minutes:seconds:millisec | |
* | |
* @param {range} input The value to multiply. | |
* @return The average of input range. | |
* @customfunction | |
*/ | |
function AVERAGETIME(input) { | |
if (!input.map) //test if it is not an array | |
return input | |
var total_time = 0; | |
var total = input.length; | |
for (var i =0 ; i<total; i++){ | |
var time = getTimeInMicroSeconds(input[i]); | |
total_time += time; | |
} | |
var average_time = Math.floor(total_time/total); | |
var microseconds = average_time % 100; | |
var seconds = Math.floor(average_time/100) % 60; | |
var minutes = Math.floor(average_time/6000); | |
return correctSizeString(minutes,2)+"."+correctSizeString(seconds,2)+"."+correctSizeString(microseconds,2); | |
} | |
function BESTTIME(input) { | |
if (!input.map) | |
return input; | |
minimum_time = Infinity; | |
index_minimum = -1; | |
for (var i=0; i<input.length; i++) { | |
var time = getTimeInMicroSeconds(input[i]); | |
if (time < minimum_time){ | |
minimum_time = time; | |
index_minimum = i; | |
} | |
} | |
return input[index_minimum]; | |
} | |
function getTimeInMicroSeconds(timeGiven) { | |
var time = String(timeGiven).split('.'); | |
return parseInt(time[0])*6000 + parseInt(time[1])*100 + parseInt(time[2]); | |
} | |
function correctSizeString(time, length){ | |
var strTime = time.toString(); | |
while (strTime.length < length){ | |
strTime = "0" + strTime; | |
} | |
return strTime; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment