LoginSignup
0
0

Google Space にAnalyticsデータを日次で投稿する

Posted at

はじめに

会社のコミュニケーションツールは何を使っていますか?
当社はGoogle Chatを使っております。このChatの派生機能でコミュニティが作れるSpaceというのがありますが、ここに同じGoogleのGASを使って色々とお知らせ投稿をさせてみようと考えております。
手始めにAnalyticsで取得した日々のアクセスレポート(PVとかUU)について自動投稿させて、定点観測できるようにしたいと思います。

前提条件

  • 既にGoogle Spaceを使っているものとするのでこちらの詳細は省略
  • Google Analyticsで何かのサイト(今回は社内のイントラにしてみました)を計測しているものとする

下準備

  • Google Spaceの設定を開いて「アプリと統合」メニューを開く
    image.png
  • Webhookを追加してURLを取得する
    image.png
  • Google Analyticsの当該レポートより、プロパティIDを取得する
    image.png

GASの開発

ということで早速Drive内にGoogleAppScriptを作成します。
image.png

AnalyticsのAPIのサービスを追加

サービスの欄からこちらを追加
image.png

入力するコード

こちらを入力し、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}`);
  }
}

実行

ここからテストもしくは実行ができます。ブレークポイント張ってステップ実行しながらデバッグするならデバッグで普通に実行する際には実行ボタンです。
image.png

また、時間指定してバッチ処理も可能です。
image.png

投稿イメージ

こんな感じで投稿されます。
image.png

最後に

こんな感じで色々応用範囲が広いかと思うのでぜひGASとGoogle Space、Analyticsを利用してみてください。

0
0
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
0
0