LoginSignup
5
5

More than 5 years have passed since last update.

Google Spread Sheetに記載した複数URLのPage Speed Insightsの点数をGoogle Apps Scriptで取得する方法

Posted at

この記事はSpeee Advent Calendar 2016 の3日目の記事です。

前日の記事は
@hatappiJob管理をAirflowからKuroko2に乗り換えたら幸せになった - hatappiのブログ
です。

ディレクターの@cultivaです。
普段の仕事では海外向けのサービスのプロダクトマネジメントをしています。

概要

この記事では、
Google Spread Sheetに記載した複数URLの
Page Speed Insightsの点数を
Google Apps Scriptで取得する方法を紹介します。

PageSpeedInsightsとは?

スクリーンショット 2016-12-02 17.03.34.png

Googleが提供しているWebページのパフォーマンス測定ツールです。
PCサイト画面とスマホサイト画面のそれぞれのパフォーマンスを測定してくれます。

PageSpeedInsightsでのスコア取得例

スクリーンショット 2016-12-02 16.54.20.png

入力窓にURLを入力して分析のボタンを押すと、
このように結果が表示されます。
しかも、修正方法まで提案してくれる優れものです。

PageSpeedInsightsAPI

スクリーンショット 2016-12-02 16.54.57.png

GoogleはPageSpeedInsightのAPIを提供しています。
なお、25,000回/日のリクエスト制限があるので、注意してください。

PageSpeedInsightAPIをGoogleAppScriptから使用

下記のステップで行います。

  • APIキーを取得
  • GoogleAppScriptのコード作成(以下のサンプルをコピー)

APIキーの取得

d6f23731-15d6-2a34-128d-0288f9ea613e.png

Google Developer Consoleから取得します。詳しくはこちらから。

GoogleAppScriptのコード

コードは以下の通りです。

実際に使用する前に
var APIkey = 'API_KEY''API_KEY'の箇所を
API Consoleで取得したAPIキーで上書きしてください。

PageSpeedInsightsScoreOnly.gs
function pageSpeed(url, strategy, locale) {
  //シートを扱う準備
  var myActiveSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var myActiveSheet = myActiveSpreadSheet.getSheets()[0];

  for (var i=1; i < 10; i++) {      

    //URLを取得
    var url = myActiveSheet.getRange(i,1).getValue();

    //APIに投げる
    var APIkey = 'API_KEY';
    locale = locale || 'ja_JP'; // default is 'en'
    strategy = strategy || 'desktop'; // 'desktop' or 'mobile'
    var url = 'https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=' + url + '&key=' + APIkey + '&local=' + locale + '&strategy=' + strategy;

    try {
      var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true });
    }
    catch (err)
    {
      Logger.log(err);
      return(err);
    }

    var parsedResult = Utilities.jsonParse(response.getContentText());

    //一応ログを残す
    Logger.log(parsedResult.score);

    //書き込み
    myActiveSheet.getRange(i,2).setValue(parsedResult.score);
  }  
}

アウトプット例

スクリーンショット 2016-12-02 17.17.01.png

このようにA列にURLを入力しておいた状態で
GoogleAppScriptのコードを起動すると、
B列にPageSpeedInsightsの点数が表示されます。
※こちらのコードだとDesktopの点数が表示されます。

参考記事

スクリーンショット 2016-12-02 17.02.58.png

こちらの記事では、Page Speed Insightsの点数以外にもいくつもの指標を同時に取得する実装を紹介しています。

ですが、
今回の用途としては『点数のみ』で十分だったので、点数の取得のみに絞った実装を行いました。
加えて、スプレッドシートに記載したURLの点数を取得する運用にしたかったので、その運用にあわせた実装を行いました。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5