こんにちは。株式会社VALGOエンジニアのヌマです。
リモートワークがメインなので2022年頃に東京から地元の秋田に戻り業務を行っています。
背景
大企業、中小企業どの規模の会社でも自社のホームページへのアクセス情報は取得していると思います。
このアクセス情報をそのままにしてしまっていないでしょうか?
弊社もうまく活用できていなかったので、まずデータ活用に一歩踏み出せるように、閲覧数やセッション数などの数値をSlackに通知する仕組みを作成しました。
前提条件
- Google Analyticsの設定は済んでいること
- Slack APIを利用できるようになっていること
使用したもの
- Google Analytics
- Slack
- Google スプレッドシート
- Google Apps Script
実装

Google スプレッドシートにGoogle Analyticsの情報を連携する
Google スプレッドシートのアドオンを利用してGoogle Analyticsの情報を連携します。
アドオンは「GA4 Reports Builder」と検索し、Googleが提供しているアドオンをインストールします。

拡張機能にアドオンが追加されたら「Create new report」をクリックし、作成するレポートをどのようにするかを指定します。

MetricsとDimensionsの設定値は以下にしています。
項目名 | 設定値 |
---|---|
Metrics | screenPageViews,sessions |
Dimensions | pageLocation,pagePath,pageTitle |
レポート作成後、「Run reports」でGoogle AnalyticsからGoogle スプレッドシートに連携できます。

Google スプレッドシートの内容をSlackに連携する
Google スプレッドシートにGoogle Analyticsの情報を出力することができたらこの情報をSlackに連携します。
SlackのAPIを利用するためにGoogle Apps Script(GAS)を利用します。
Slackへ連携する文章をGoogle Apps Scriptの方でも作成できますが、誰でも対応できるように”サマリ”シートの”A1″セルに入力されるようにして連携を行いました。
具体的には以下のコードを作成しました。
function analyticsNotice() {
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = activeSpreadsheet.getSheetByName('サマリ');
//Slackに連携する文章はすべて"サマリ"シートの"A1"に格納しています。
var slackText = activeSheet.getRange('A1').getValues();
sendSlack(slackText[0]);
}
function sendSlack (slackText){
var webHookUrl = "https://slack.com/api/chat.postMessage";
//アクセストークンやチャンネルIDはセキュアに対応しています
const accessToken = PropertiesService.getScriptProperties().getProperty("slack_token");
const channelId = PropertiesService.getScriptProperties().getProperty("channel_id");
const headers = {
Authorization: "Bearer " + accessToken,
"Content-type": "application/json"
};
var jsonData =
{
//好きな絵文字をアイコンにできます。
'icon_emoji' : ':good:',
//メッセージを入力しています。
"blocks":[
{
"type" : "section",
"text":{
"type" : "mrkdwn",
"text" : slackText[0]
}
}
],
//好きなユーザー名に変更できます。
"username" : "Analytics通知",
"channel": channelId
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"headers": headers,
"contentType" : "application/json",
"payload" : payload,
};
UrlFetchApp.fetch(webHookUrl, options);
}
GA4 Reports BuilderのアドオンとGoogle Apps Scriptも定期実行させることで月一度のPage Viewの結果をランキング形式で出力することも可能です。

つまずき
日本語が文字化けする

セルに格納されているテキストが配列内にあるのが原因でした。
出力するテキストは配列の一つ目に入るのでslackText[0]と指定しました。
改行ができない問題

\nでは改行されませんでした。
代わりにセル内で改行できるchar(10)を利用してセルで改行したテキストをSlack APIに渡すことで解決しました。
アドオンがスケジュール設定した時間に実行されない

スケジュール実行の設定を毎月1日の12時から13時に設定していましたが、
実際には翌日2日の4:52に実行されました。
通知を出したい時間から逆算して設定してあげる必要があります。
まとめ(感想)
今回はGoogle Analyticsの情報を気軽に扱えるようにGoogle スプレッドシートを利用した方法を紹介いたしました。
もっと活用するには、Google Cloud Platform(GCP)を利用することで、大規模言語モデル(Large Language Model)としてGeminiを利用するような方法もあるかと思いますが、まずはスモールスタートでもよいので始めることが重要になってきます。
ぜひこの記事を参考に情報の利活用の第一歩を踏み出しましょう。