Last active
May 23, 2022 09:10
-
-
Save abfo/954d12d73651c2203e91442d2b50a94f to your computer and use it in GitHub Desktop.
This file contains hidden or 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
var pageSpeedApiKey = ''; | |
var pageSpeedMonitorUrl = ''; | |
function monitor() { | |
var desktop = callPageSpeed('desktop', pageSpeedMonitorUrl); | |
var mobile = callPageSpeed('mobile', pageSpeedMonitorUrl); | |
var desktopVitals = getVitals(desktop); | |
var mobileVitals = getVitals(mobile); | |
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = spreadsheet.getSheetByName('results'); | |
sheet.appendRow([ | |
Utilities.formatDate(new Date(), 'GMT', 'yyyy-MM-dd'), | |
desktop.lighthouseResult.categories.performance.score * 100, | |
desktopVitals.lcp == -1 ? ' ' : desktopVitals.lcp, | |
desktopVitals.fid == -1 ? ' ' : desktopVitals.fid, | |
desktopVitals.cls == -1 ? ' ' : desktopVitals.cls, | |
mobile.lighthouseResult.categories.performance.score * 100, | |
mobileVitals.lcp == -1 ? ' ' : mobileVitals.lcp, | |
mobileVitals.fid == -1 ? ' ' : mobileVitals.fid, | |
mobileVitals.cls == -1 ? ' ' : mobileVitals.cls | |
]); | |
// much more available, i.e. desktop.pageStats.numberResources | |
} | |
function callPageSpeed(strategy, url) { | |
var pageSpeedUrl = 'https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=' + url + '&key=' + pageSpeedApiKey + '&strategy=' + strategy; | |
var response = UrlFetchApp.fetch(pageSpeedUrl); | |
var json = response.getContentText(); | |
return JSON.parse(json); | |
} | |
function getVitals(result) { | |
var lcp; | |
var fid; | |
var cls; | |
try { | |
lcp = result.originLoadingExperience.metrics.LARGEST_CONTENTFUL_PAINT_MS.percentile / 1000; | |
} catch { | |
lcp = -1; | |
} | |
try { | |
fid = result.originLoadingExperience.metrics.FIRST_INPUT_DELAY_MS.percentile / 1000; | |
} catch { | |
fid = -1; | |
} | |
try { | |
cls = result.originLoadingExperience.metrics.CUMULATIVE_LAYOUT_SHIFT_SCORE.percentile; | |
} catch { | |
cls = -1; | |
} | |
return { "cls":cls, "fid":fid, "lcp":lcp }; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment