PageSpeedInsightsとは
Googleのツールのひとつ。
webページの読み込みスピード等の、パフォーマンスのスコアを計測することが出来ます。
対象ページのurlを入力することで計測が可能です。
Googleの検索順位の指標、CoreWebVitalsの対策にもなる改善項目を取得できるため、SEO対策に有効です。
PageSpeedInsights API とは
Google純正のAPI。
PageSpeedInsightsの結果をjson形式で取得できます。
今回はこちらを使用して、取得結果をGoogleSpreadSheetに書き込みたいと思います。
イメージとソースコード
イメージ1:url入力欄と実行ボタン
イメージ2:結果の出力
※分かりやすいようにヘッダーに色をつけています。
ソースコード
使用言語:GoogleAppScript
function myFunction() {
// 対象のスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
// 読み込むシート
var read_sheet = ss.getSheetByName("実行")
// 書き込むシート
var write_pc_sheet = ss.getSheetByName("結果-PC")
var write_sp_sheet = ss.getSheetByName("結果-SP")
// 対象のurlを取得
var range = read_sheet.getRange("B3");
var url = range.getValue();
var arrPc = getResult(url, "desktop"); // PCの結果を取得
var arrSp = getResult(url, "mobile"); // SPの結果を取得
writeResult(write_pc_sheet, arrPc); // PCの結果を書き込む
writeResult(write_sp_sheet, arrSp); // SPの結果を書き込む
}
function getResult(url, strategy){
// PageSpeed Insights APIを実行
var result = UrlFetchApp.fetch(
'https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url='
+ url // 計測対象のurl
+ "&locale=ja" // ローカライズ
+ "&strategy=" + strategy // 端末の指定
);
// JSONの結果を配列にする
return JSON.parse(result);
}
function writeResult(sheet, arr){
// パフォーマンス
var performance = arr["lighthouseResult"]["categories"]["performance"];
// ヘッダ
sheet.appendRow([
"id",
"title",
"score"
]);
// 値
sheet.appendRow([
performance["id"],
performance["title"],
performance["score"]
]);
// 改善項目・内容を書き込む
// シートの最終列を取得
var lastRow = sheet.getLastRow();
// 最終列から2行空けて書き込み
sheet.getRange(lastRow+2, 1, 1, 3).setValues([[
"id",
"title",
"description"
]]);
// 改善項目(オブジェクト)
var audits = arr["lighthouseResult"]["audits"];
// 一行ずつ書き込む
Object.keys(audits).forEach(function (key) {
var audit = audits[key];
if (audit["id"] === false || audit["title"] === false || audit["description"] === false) {
return;
}
sheet.appendRow([
audit["id"],
audit["title"],
audit["description"]
]);
});
}
注意
- GASのデフォルト仕様では、1分間のクエリ実行回数に制限が掛かっています。こちらのソースコードをそのまま使用しても、制限に引っ掛かり失敗する可能性があります。
- Googleに申請することで上限を増やすことが出来るようです。