Google スプレッドシートに PageSpeedInsights API v5 の結果を記録する Google Apps Script を書きました

2018年 11月の末に PageSpeedInsights の API の Version が上がって v5 になりました。
古い API で Google スプレッドシートに記録する スクリプトを作っていたので、 それを元に v5 の戻り値を Google スプレッドシートに記録する Google Apps Script を作ってみました。

作成したものについて記載します。


v4 API で 結果を記録する Google Apps Script

以前、PageSpeedInsights v4 向けのスクリプトを作成しました。


v4 から v5 の変更点

以下、2 点が大きな変更点かと思います。

  1. Lighthouse ベースの 測定指標に変更された。

  2. Lighthouse ベースの 測定指標に変更された結果、SpeedIndex 等の 時間を示す指標が取得できるようになった。

ローカル環境で Chrome の Lighthouse を動作させた場合との違いは Chrome User Experience Report  |  Tools for Web Developers  |  Google Developers結果も取得できることです。


指定できるパラメータ

v5 API は以下のパラメータが指定できます。
v4 から そこまで大きな変化はありません。

Google APIs Explorer から API のお試し実行が可能です。

  • url
    検査対象の URL を指定します。

  • category
    これは Lighthouse の スコアのカテゴリです。 accessibilityseopwaperformancebest-practices複数指定できます。

  • locale
    ja_JP 等、指定可能です。 戻り値に含まれるエラー、警告メッセージのローカライズが 行われます。

  • strategy
    desktop または mobile指定できます。

  • utm_campaign
    Google Analytics の utm パラメータです。

  • utm_source
    Google Analytics の utm パラメータです。

  • fields
    戻り値に含める項目を指定できます。cateogry を複数指定する場合は、戻りとなる json がかなり大きくなるので、Google APIs Explorer生成したクエリ文字列を元に必要な項目だけ取得したほうがいいかと思います。


作成したもの一式

kemsakurai/gas-PageSpeedInsights-v5: Google Apps Script to record the return value of the PageSpeedInsights v5 API in the spreadsheet に、置いてあります。clasp を使って TypeScript で 実装してみました。
以下の機能があります。

  1. config シートに記載された シート名を元に記録用のシートを作成する。
  2. config シートの URL に対して、PageSpeedInsights v5 を実行して実行結果を記録する。
  3. メニューから PageSpeedInsights v5の実行、スケジュール実行の設定ができる。

使い方

kemsakurai/gas-PageSpeedInsights-v5: Google Apps Script to record the return value of the PageSpeedInsights v5 API in the spreadsheet使い方を説明します。

前提

Node.js と、clasp のインストールが前提で必要です。
参考になる記事をリンクしておきます。

リポジトリをクローンする

git clone https://github.com/kemsakurai/gas-PageSpeedInsights-v5.git <project_name>   

クローンしたディレクトリに移動して、npm install実行する

cd <project_name>
npm install

.clasp.jsonスクリプト ID を変更する

記録先となるスプレッドシートを作成し、コンテナバインドスクリプト のスクリプト ID を取得します。
スクリプト ID の取得手順は以下の通りです。

  • 作成したスプレッドシートのツールからスクリプトエディタを開きます。
    スクリプトエディタを<wbr>開く<wbr>

  • スクリプトエディタが起動します。ファイルメニューのプロジェクトのプロパティを開きます。
    プロジェクトの<wbr>プロパティ

  • ウィンドウが開きます。スクリプト ID が表示されるのでコピーします。
    スクリプトID

  • .clasp.json内容を修正
    .clasp.json scriptId に 取得した スクリプト ID を貼り付けます。

    {
      "scriptId": "<your_script_id>",
      "rootDir": "dist"
    }
    

ビルド、デプロイ

  • ビルド
    bundle.js updateSchedule.html dist ディクレトリ配下に作成します。

    npm run build     
    

  • デプロイ
    ビルドし、.clasp.json指定したスクリプトに対してデプロイを実施します。

    npm run deploy     
    

デプロイ後の設定

スクリプトのプロパティに以下を設定します。

スクリプトの<wbr>プロパティ

スプレッドシートの設定

スクリプトのデプロイが完了すると、以下のようなメニューが表示されます。
記録する URL の指定、記録用のシートの作成、スケジュール実行の設定を行います。
メニュー

1. Create config sheet

config シートを作成します。
以下のようなレイアウトのシートができます。

Urls には、記録対象の URL を、SheetName には、記録シートの名称を入力します。
config

実際に動かしたところ6分の制限の場合、3、4 URL が限界のようです。

2. Create recording sheet

config シートの内容をもとに、記録シートを作成します。
記録シートには、以下のカラムがあります。
GAS で PageSpeedInsights API を使って Lighthouse のスコアも取得する - Qiita参考に MOBILE と DESKTOP のスコア、基本的な速度指標を取得するようにしました。

  • DATE
  • MOBILE.accessibilityScore
  • MOBILE.bestPracticesScore
  • MOBILE.performanceScore
  • MOBILE.pwaScore
  • MOBILE.seoScore
  • MOBILE.firstContentfulPaint
  • MOBILE.speedIndex
  • MOBILE.interactive
  • MOBILE.firstMeaningfulPaint
  • MOBILE.firstCpuIdle
  • MOBILE.estimatedInputLatency
  • DESKTOP.accessibilityScore
  • DESKTOP.bestPracticesScore
  • DESKTOP.performanceScore
  • DESKTOP.pwaScore
  • DESKTOP.seoScore
  • DESKTOP.firstContentfulPaint
  • DESKTOP.speedIndex
  • DESKTOP.interactive
  • DESKTOP.firstMeaningfulPaint
  • DESKTOP.firstCpuIdle
  • DESKTOP.estimatedInputLatency

3. Run Test

Create config sheetCreate recording sheet実行すると、Run Test実行可能です。
config シートの内容に従い、記録シートに API の結果を記録します。

4. Shchedule

記録シートへの記録をスケジュール実行登録できます。
スクリプトトリガ の時間ベーストリガの実行とたいだい同じことができます。


グラフ描画時の注意点

スプレッドシートでも、DataPortal でもグラフ描画ができますが、以下 1点注意点です。

  • estimatedInputLatency の単位は ミリ秒
    他の速度指標は 秒 ですが estimatedInputLatency は ミリ秒で値が返ります。
    他の速度指標と同じ同一のグラフで描画する際は、単位調整が必要になります。

参考

以上です。

コメント