DataStudioと
この
[TOC]
最終的な 出力結果
以下のような
作成した もの
スプレッドシート
シート名 config
で
Key には、
Urls には、
SheetName には、
スクリプト実行の 事前準備
BetterLog の
プロジェクト参照を 追加する
peterherrmann/BetterLog: With one line of code, BetterLog extends the native apps script Logger and gives you automatic additional features like logging to a spreadsheet and more. をスクリプトの 参照ライブラリと して 追加します。 API Key の
発行
Page Speed Insights のAPI Key を 発行します。 API Key の 発行方法は 以下の 記事が 参考に なりました。
Google Spread Sheetに記載した 複数URLの Page Speed Insightsの 点数を Google Apps Scriptで 取得する 方法 - Qiita
init.gs
config
シートにconfig
シートの
var Logger = BetterLog.useSpreadsheet("", "Logs"); Logger.setLevel("INFO"); function initialize() { // 測定sheet template を作成します。 var sheet = getSheet("config"); var sheetNames = getColumValues("config", "B", 3); for (var index = 0; index < sheetNames.length; index++) { var urlSheet = getSheet(sheetNames[index]); // sheetが存在しない場合、初期化して作成する if(urlSheet == null) { var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); newSheet = activeSpreadsheet.insertSheet(); newSheet.setName(sheetNames[index]); newSheet.clear(); newSheet.getRange("A1").setValue("DATE"); newSheet.getRange("A1").setBackground("lightsteelblue"); newSheet.getRange("B1").setValue("MOBILE SPEED SCORE"); newSheet.getRange("B1").setBackground("lightsteelblue"); newSheet.getRange("C1").setValue("MOBILE USABILITY SCORE"); newSheet.getRange("C1").setBackground("lightsteelblue"); newSheet.getRange("D1").setValue("PC SPEED SCORE"); newSheet.getRange("D1").setBackground("lightsteelblue"); } } return; }
pageSpeed.gs
以下、
mobile は、USABILITY.score
をUSABILITY.score
に
私は
API_KEY には、referer
をyour.domain.com
にはreferer
を
var Logger = BetterLog.useSpreadsheet("", "Logs"); var API_KEY = getSheet("config").getRange("A2").getValue(); var PAGESPEED_URL = 'https://www.googleapis.com/pagespeedonline/v2/runPagespeed'; Logger.setLevel("INFO"); function executePageSpeed() { var urls = getColumValues("config", "A", 3); var sheetNames = getColumValues("config", "B", 3); for (var index = 0; index < sheetNames.length; index++) { var url = urls[index]; var sheetName = sheetNames[index]; var sheet = getSheet(sheetName); var targetRowIndex = sheet.getLastRow() + 1; // mobile のページスコアを取得 result = pageSpeed_(url, "mobile","ja_JP"); sheet.getRange(targetRowIndex, 1).setValue(new Date().toISOString()); sheet.getRange(targetRowIndex, 2).setValue(result.ruleGroups.SPEED.score); sheet.getRange(targetRowIndex, 3).setValue(result.ruleGroups.USABILITY.score); // desktop のぺージスコアを取得 result = pageSpeed_(url, "desktop","ja_JP"); sheet.getRange(targetRowIndex, 4).setValue(result.ruleGroups.SPEED.score); } return; } function pageSpeed_(url, strategy, locale) { //URLを取得 var url = encodeURI(url); locale = locale || 'ja_JP'; // default is 'en' strategy = strategy || 'desktop'; // 'desktop' or 'mobile' var fullUrl = PAGESPEED_URL + '?key=' + API_KEY + '&locale=' + locale + '&strategy=' + strategy + "&url=" + url + "&filter_third_party_resources=true"; var headers = { 'referer': "your.domain.com" }; var options = { "method" : "get", "headers" : headers, "muteHttpExceptions": false }; try { var response = UrlFetchApp.fetch(fullUrl, options); } catch (err) { throw err; } var parsedResult = JSON.parse(response.getContentText("UTF-8")); return parsedResult; }
utils.gs
init.gs
、pageSpeed.gs
で
// 列の値を配列で取得する function getColumValues(sheetName, columnName, startIndex) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(sheetName); var values = sheet.getRange(columnName + ":" + columnName).getValues(); var result = new Array(); for (var i = 0; i < values.length; i++) { if (i >= startIndex) { if(values[i] != null && values[i] != "") { result.push(values[i]); } } } return result; } // シートオブジェクトを取得する function getSheet(sheetName) { var ss = SpreadsheetApp.getActiveSpreadsheet(); return ss.getSheetByName(sheetName); }
実行結果 と グラフ化
実行結果
pageSpeed.gs
を
グラフ化
記録した
期間に日付YYYYMMDD
形式 数値の
この最終的な<wbr>出力結果
の
グラフの 用途
個人的な
会社等で
以上です。
仕事上だと、
Page Speed Insights の スコアだけだと 弱くて、 売り上げ等お金に 関わる 指標との 因果関係は 別途算出する 必要が あるかと 思います。 ↩
コメント