はじめに
会社のコミュニケーションツールは何を使っていますか?
当社はGoogle Chatを使っております。このChatの派生機能でコミュニティが作れるSpaceというのがありますが、ここに同じGoogleのGASを使って色々とお知らせ投稿をさせてみようと考えております。
手始めにAnalyticsで取得した日々のアクセスレポート(PVとかUU)について自動投稿させて、定点観測できるようにしたいと思います。
前提条件
- 既にGoogle Spaceを使っているものとするのでこちらの詳細は省略
- Google Analyticsで何かのサイト(今回は社内のイントラにしてみました)を計測しているものとする
下準備
GASの開発
ということで早速Drive内にGoogleAppScriptを作成します。
AnalyticsのAPIのサービスを追加
入力するコード
こちらを入力し、WebhookやAnalyticsのプロパティIDなど適宜修正してみてください。
function googleChatBot() {
//GoogleChatで設定したWebhookのURLを設定
const WEBHOOK_URL = "[Google ChatのWebhook]";
const [yesterday, pv, uu] = Getanalytics();
var msg;
msg += '【昨日のポータルのPV、UUをお知らせします】\n';
msg += '日付: '+yesterday+'\n';
msg += 'PV: '+pv+'\n';
msg += 'UU: '+uu+'\n';
var message = {
'text' : msg
};
//HTTPリクエストのパラメータを設定
var options = {
'payload' : JSON.stringify(message),
'myamethod' : 'POST',
'contentType' : 'application/json'
};
//Google Chatへ投稿(WebhookURLへHTTP POSTを実行)
var response = UrlFetchApp.fetch(WEBHOOK_URL,options);
}
function Getanalytics() {
const GA4_PROPERTY_ID = "[GAで取得したプロパティID]";
try {
// PV, UU等メトリクス(値)、複数指定可能
const metric1 = AnalyticsData.newMetric();
metric1.name = "screenPageViews";
const metric2 = AnalyticsData.newMetric();
metric2.name = "totalUsers";
// データの日付範囲
const dateRange = AnalyticsData.newDateRange();
var today = new Date();
var yesterday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);
var today = Utilities.formatDate(today, 'Asia/Tokyo', 'yyyy-MM-dd');
var yesterday = Utilities.formatDate(yesterday, 'Asia/Tokyo', 'yyyy-MM-dd');
dateRange.startDate = yesterday;
dateRange.endDate = yesterday;
const request = AnalyticsData.newRunReportRequest();
request.metrics = [metric1, metric2];
request.dateRanges = dateRange;
// Analyticsデータ取得
const report = AnalyticsData.Properties.runReport(request,
'properties/' + GA4_PROPERTY_ID);
Logger.log(report.rows);
if (!report.rows) {
Logger.log('No rows returned.');
return [yesterday, 0, 0];
}
Logger.log("pv:"+report.rows[0].metricValues[0].value + "uu:"+report.rows[0].metricValues[1].value);
return [yesterday, report.rows[0].metricValues[0].value, report.rows[0].metricValues[1].value];
}catch (e) {
// TODO (Developer) - Handle exception
Logger.log(`Failed to write report with error: ${e}`);
}
}
実行
ここからテストもしくは実行ができます。ブレークポイント張ってステップ実行しながらデバッグするならデバッグで普通に実行する際には実行ボタンです。
投稿イメージ
最後に
こんな感じで色々応用範囲が広いかと思うのでぜひGASとGoogle Space、Analyticsを利用してみてください。