Collect KPIs for blog
Googleスプレットシートで定期的にブログの情報を集計するためのApps Scriptを生成するスターターキットです。
このリポジトリを使ってApps Scriptとスプレットシートを作成すると、以下のKPI情報をシートに書き込んでいきます。
未設定にしておけば取得もしないので、全てサービスからの情報が不要な方でも利用できます。
後述するトリガーを設定しておくことで定期的にデータを集計できます。
~Twitter~ | ~フォロワー数~
Google Analytics | 前日までの週間PV数、 前日までの週間直帰率
はてなブックマーク | はてなブックマーク総数
はてなブログ | はてなブログ読者総数
はてなスター | はてなスター総数
2022年1月現在、twitterのフォロワー数は取得できません。
#18
自分のPCでclasp
コマンドを利用する準備をします。以下のページを参考にclasp login
まで済ませておきます。
- GAS のGoogle謹製CLIツール clasp
このリポジトリをローカルに持ってきて、パッケージ群をインストールします。
git clone git@github.com:budougumi0617/blog-kpi-collector.git
cd blog-kpi-collector
npm install
clasp create
コマンドでAdd-on script(Apps Scriptプロジェクト)と紐付けるスプレットシートを作成します。
$ clasp create --title "KPI Sheet" --type sheets --rootDir ./src
Created new Google Sheet: https://drive.google.com/open?id=....
Created new Google Sheets Add-on script: https://script.google.com/d/..../edit
Cloned 1 file.
└─ ./src/appsscript.json
$ mv ./src/.clasp.json ./.clasp.json
出力されたAdd-on scriptとSpread SheetのURLをメモしておきます。その後、一度clasp pull
して連携したあと、clasp push
コマンドでコードをDriveに送ります。
$ clasp pull
Cloned 2 files.
└─ ./src/appsscript.json
└─ ./src/Code.js
$ clasp push
└─ src/Code.js
└─ src/appsscript.json
└─ src/googleAnalytics.ts
└─ src/hatena.ts
└─ src/main.ts
└─ src/slack.ts
└─ src/twitter.ts
Pushed 6 files.
Add-on scriptのURLを開きます(clasp open
コマンドでも開きます)。
main.gs
ファイルを選択し、main
関数を実行します。
「承認が必要です」と出てくるので「許可を確認」→アカウントを選択→「詳細」→「KPI Sheet(安全ではないページ)に移動」→「許可」とクリックしていきます。
実行後、スプレットシートを開き、以下の状態になっていたら初期設定は終了です。
スクリプトのプロパティにアカウントIDなどを入力すれば実行のたびに最後の行に新しい情報が追加されていきます。 (必要に応じて最初の行に列情報を書いておくといいでしょう)
Web上でAdd-on script(Apps Scriptプロジェクト)を開いたあと、スクリプトのプロパティに以下の変数を設定します。 なお、未入力の場合は対応するサービスから値が取得されません。
変数名 | 値 | 説明 | 例 |
---|---|---|---|
SHEET_NAME |
集計したいシートの名前 | 未設定の場合は「シート1」に集計する | master |
TWITTER_NAME |
Twitter ID | フォロワー数を取得する | budougumi0617 |
GA_VIEW_ID |
GA ID | 一週間のPV数と直帰率を集計する | ga:000000000 |
BLOG_URL |
ブログのURL | はてなブックマーク数を取得する | https://budougumi0617.github.io/ |
HATENA_BLOG |
true or another | BLOG_URL が設定済みであることがであることが前提。はてなブログ読者数とはてなスター数を取得する、未設定もしくはtrue以外の設定は未入力と同じく値を取得しない |
true |
SLACK_URL |
SlackのIncommingHook | Slackの通知先のIncommingHookを設定する | https://hooks.slack.com/services/TAH1RHKEW/B01BXA1PYBC/JQ5aIRrqTnAAAAAAAAAAAAA |
2022年1月現在、下記手順は「旧エディタ」でないとできません。
添付画像とエディタの外見が異なる場合は「以前のエディタを使用」をクリックして旧エディタを開きます。
https://8bees.net/gas%e3%81%ae%e3%83%97%e3%83%ad%e3%83%91%e3%83%86%e3%82%a3%e8%a8%ad%e5%ae%9a
- このリポジトリで作成したApps Scriptのプロジェクトを開く
- メニューの中の「ファイル」→「プロジェクトのプロパティ」をクリックする
- 「プロジェクトのプロパティ」ウインドウの「スクリプトのプロパティ」タブをクリックする
- 設定するプロパティの名前と値を入力していく
スクリプトのプロパティが「旧エディタ」でないとできなくなっていますので、直接値を設定する方法を取る場合の設定箇所を記載します。
- 対象ファイル
- CustomProperties.ts
次の定数(const)に「スクリプトのプロパティ」を設定してください。
namespace CustomProperties {
const SHEET_NAME = "";
const TWITTER_NAME = "";
const VIEW_ID = "";
const BLOG_URL = "";
const HATENA_BLOG = false;
const SLACK_URL = "";
}
Google Analyticsとの連携にはGA_VIEW_ID
の他にAnalytics APIを有効にする必要があります。
まず、Google Analyticsの情報を取得するためのIDの取得方法は以下の通りです。
- 以下のURLを開く
Select View
で集計したいデータを選択するSet the query parameters
のids
に自動入力されるga:000000000
というIDをGA_VIEW_IDとする
- Add-on scriptのメニューから「リソース」→「Google の拡張サービス」を選択し、Google Analytics APIを有効にします。
- Google Cloud Platform API ダッシュボード へのリンクがあるのでクリックすると、別のウインドウが開きます。
- APIを有効にするボタンをクリックして「Analitycs API」を探し、有効にします。
- もう一度Add-on scriptに戻り
main
関数を実行すると、最初に出てきた認可ウインドウが表示されるので、最初と同じように「許可」をします。
clasp run
コマンドで実行できます。別途認証情報などが必要になるので、以下のページを参考に追加の設定をしてください。
Add-on scriptの時計のアイコンからトリガーを設定することができます。
メニューの中の「編集」→「現在のプロジェクトのトリガー」から定期的にmain
関数を実行するようにします。
タイムゾーンがずれているかもしれません。 メニューの中の「ファイル」→「プロジェクトのプロパティ」をクリックし、「プロジェクトのプロパティ」ウインドウ内の「情報」タブの中に「タイムゾーン」の設定があるのでそちらを確認してください。
通知先チャンネルを設定したIncommingHookを設定する。
https://my.slack.com/services/new/incoming-webhook/
下記のWebhook URLをSLACK_URL
に設定する。
なお、トリガーで深夜に起動する場合は、Slack側で深夜の通知が来ないようにする等の設定をしてください。
最新のスクリプトを利用したい場合は、次のコマンドで実行できます。
$ git pull
$ clasp push
ローカルに直接Claspを導入せずにDockerを使用する場合は、こちらの手順を参考にしてください。
# コンテナへのログイン
docker-compose run clasp bash
cd /usr/src/app
# Googleへのログイン
clasp login --no-localhost
# npm install
npm install
# KPIシート作成
clasp create --title "KPI Sheet" --type sheets --rootDir ./src
# .clasp.jsonの移動
mv ./src/.clasp.json ./.clasp.json
clasp pull
clasp push
Issueでお願いします。
https://github.com/budougumi0617/blog-kpi-collector/issues/new
@budougumi0617
MIT