Skip to content

Instantly share code, notes, and snippets.

@abfo
Last active May 23, 2022 09:10
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abfo/954d12d73651c2203e91442d2b50a94f to your computer and use it in GitHub Desktop.
Save abfo/954d12d73651c2203e91442d2b50a94f to your computer and use it in GitHub Desktop.
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