3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonAdvent Calendar 2022

Day 12

Dynamic Linksで発行したURLのクリック数をPythonで確認

Last updated at Posted at 2022-12-12

はじめに

Firebase Dynamic Linksと聞くと、iOSアプリやAndroidアプリ周りでのトラッキングなどでよく使われている印象ですが、弊社では営業業務の効率化などに使っています。

具体的には、アプローチ先に送った資料のURLがクリックされているかなど、SFAでできるようなトラッキングの機能を試す際に使っています。スタートアップの初期や個人開発だとSFAの導入はハードルが高いため、導入せず類似の機能を試すことができるというのがかなり便利です。

今回の記事では、実際の業務でDynamic Linksを使って、実装、運用をする際に工夫した点などについて書いてみました。

ソースコード

以下で記述しているソースコードは、Dynamic Linksで発行した追跡URLのクリック数をプログラムで確認できるというものです。

import json
from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession


if __name__ == '__main__':

    url = "クリック数を見たいURL"
    
    scopes = [
        "https://www.googleapis.com/auth/firebase"
    ]

    # 今回はコードに直書きしていますが、環境変数や使うインフラ環境に合わせてここは設定してください
    # またお使いのアカウント情報に沿って下記情報を書き換えてください
    service_account_key = {
        "type": "認証タイプ",
        "project_id": "プロジェクトID",
        "private_key_id": "プライベートキーID",
        "private_key": "プライベートキー",
        "client_email": "クライアントEメール",
        "client_id": "クライアントID",
        "auth_uri": "auth URL",
        "token_uri": "トークンURL",
        "auth_provider_x509_cert_url": "auth provider x509 cer URL",
        "client_x509_cert_url": "client x509 cert URL"
    }

    credentials = service_account.Credentials.from_service_account_info(service_account_key, scopes=scopes)
    authed_session = AuthorizedSession(credentials)

    # リクエストのURLに書き換え
    request_url = 'https://firebasedynamiclinks.googleapis.com/v1/' + url.replace('://', '%3A%2F%2F').replace('/',
                                                                                                               '%2F') + '/linkStats?durationDays=30'
    response = authed_session.get(request_url)
    result = json.loads(response.text)
    
    count = 0

    # クリック数が存在しない場合は0を入れる
    if 'linkEventStats' in result:
        # 中を確認
        print(result['linkEventStats'][0]['count'])
        count = result['linkEventStats'][0]['count']
    else:
        count = 0
    
    print('クリック数は' + count + '回です。')


リクエストを送るURLのdurationDaysステータスで~日以内のクリック数という指定ができます。
上記のソースコードでは30日以内のクリック数を取得しています。

durationDays=30

業務で使う場面

Dynamic Linksを使う際、Firebaseのコンソールからリンクを発行し、クリック数などのアナリティクスも同じコンソールから確認することが多いと思います。

しかし、はじめにで話したような営業効率化の場面で使う場合、大量にURLを発行、そのURLのクリック数などをスプレッドシートで一覧管理というような業務フローが発生しました。この作業を人力で行うことで、運用工数が多くかかってしまっていました。
コストを下げようとし、結果的にコストが上がってしまったら元も子もないですよね。

上記のような状態を防ぐため、PythonやGASなどでURL発行を機械的に行い、アナリティクスを付与していく必要があります。
またその場合、スプレッドシート上でURL発行からクリック数の確認ができた方が、業務を実際に行う非エンジニアの方にも使いやすいと思い、クリック数もプログラムで付与するという方法をとっています。

営業効率化の面で話を進めてきましたが、実はプログラムで発行したURLのクリック数はコンソールで確認ができないという面があるので、そもそもこの方法しか術はないのです...

この効率化によって、SFAを導入せずとも同じ様な機能を、低コストで実現することができました。

さいごに

弊社では、営業効率化や営業支援といった部分を、テクノロジーの力で一緒に解決してくれる仲間を募集しています。
Go言語、Pythonでのバックエンド開発がメインになります。詳細は募集の方をご覧ください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?