1
1

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 3 years have passed since last update.

FirebaseとPostmanを使って短縮URLを複数取得する方法

Last updated at Posted at 2020-04-12

#はじめに
短縮URLサービスは、一般的に1つのURLの短縮を想定されていることが多い。
(例)https://bitly.com

今回、パラメータが異なる複数のURLを短縮したいと思ったが、そういうサービスはぱっと探した感じなかったので、FirebasePostmanを使って実現した。

#動機
GoogleFormでアンケートに回答してもらう際、あらかじめ回答を事前に入力できる機能がある。
(例)https://docs.google.com/forms/d/e/1FAIpQLSdVnE7pHvFJ6-9Y5XZDy8Yz6MdBFEkj9QTR_qwNuDnSTNaQXw/viewform?usp=pp_url&entry.1563907928=1
上のURL中、entry.1563907928=1で回答値を設定している。entry.1563907928は設問項目名、1の値を変えることで事前入力値を設定できる。

目的としては、上記機能を使って、異なる事前入力値を持つ複数のURLを発行することだが、だいぶ長いので短縮したいなと思ったのがきっかけ。

#Firebaseとは

少し前まで「Google URL Shortener」があったがサービス終了し、今はFirebaseのDynamic Linksで発行できる。
独自ドメインでの発行もできることから、今回はFirebaseを使う。
Firebaseの詳細は別記事を参照。

本記事では短縮URL発行だけが目的なので、プロジェクトだけ作成すればOK。

参考:[Firebase] プロジェクトを新規に作成する

#Firebaseを使った短縮URL発行 (REST API経由)
Dynamic Linksでリンクを発行する方法は4つある

  1. Firebase コンソールを使用
  2. iOS と Android で Dynamic Link Builder API を使用
  3. REST API を使用
  4. 手動

引用:https://firebase.google.com/docs/dynamic-links/create-links?hl=ja

1のFirebase コンソールにはそのような機能はなく、2だと別途アプリ開発環境が必要なので、今回は3.REST APIでリンクを発行する。

REST APIで短縮URLを発行する方法は、すでにGoogleがまとめているので下記記事を参照。

(Google)REST API を使用したダイナミック リンクの作成

上記記事に沿って、始める前にの1,2,3を実行。

これでFirebase側の設定は完了。

#Postmanのインストール

PostmanはRESTサービスの一つ。自動化しやすいのが特徴とのこと。詳しくはこちら
ネイティブアプリが必要なので下記からインストール。
Postman

#Postmanを使って複数の短縮URLを発行

Firebase側のREST APIをたたく。
サンプルコードは↓。

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=api_key
Content-Type: application/json

{
  "dynamicLinkInfo": {
    "domainUriPrefix": "https://example.page.link",
    "link": "https://www.example.com/",
    "androidInfo": {
      "androidPackageName": "com.example.android"
    },
    "iosInfo": {
      "iosBundleId": "com.example.ios"
    }
  }
}

引用:(Google)パラメータから短いリンクを作成する

これをPostmanでたたく方法は下記の通り。

####1. リクエストを作成:New → Request → プロジェクト名を入れてSave.

スクリーンショット 2020-04-12 20.17.47.png スクリーンショット 2020-04-12 20.18.08.png

####2. パラメータ(Params)の設定

  • 「POST」に変更
  • key-valueを設定。VALUEにはFirebaseで取得したapi_keyを入力。
スクリーンショット 2020-04-12 20.19.04.png

####3. Bodyの設定

スクリーンショット 2020-04-12 20.19.14.png
{
    "dynamicLinkInfo": {
        "domainUriPrefix": "https://{yourDomain}", //設定している場合はドメイン名。
        "link": "https://docs.google.com/forms/d/e/1FAIpQLSdVnE7pHvFJ6-9Y5XZDy8Yz6MdBFEkj9QTR_qwNuDnSTNaQXw/viewform?usp=pp_url&entry.1563907928={{num}}" //GoogleFormのURL。`{{num}}`は変数なのでそのまま。
    },
    "suffix": {
        "option": "SHORT" //`SHORT`にすると最低文字数4文字で生成される。
    }
}

####4. 環境変数の設定

アンケートフォームの事前入力値を「1,2,3…」とインクリメントさせるため、環境変数とTestsでnumを操作。

右上の歯車マーク → Globals → 変数を追加

スクリーンショット 2020-04-12 20.19.38.png スクリーンショット 2020-04-12 20.19.46.png
VARIABLE INITIAL VALUE CURRENT VALUE
num 1 1

####5. Testsの設定

スクリーンショット 2020-04-12 20.19.22.png
var num = Number(environment.num); //環境変数numの取得
tests["counter:" + num] = true; //結果の取得用。
pm.environment.set("num", ++num); //次の実行のためnumをインクリメント

####6. クエリを複数回実行するためのRunnerを設定

Runner機能はこちらを参照。
下記からRunnerを起動。
スクリーンショット 2020-04-12 20.19.22 2.png

作成したPOSTを選択し、Save responsesにチェック。
Iterationsは実行回数。
Runで実行。
スクリーンショット 2020-04-12 20.21.55.png

結果、Response Bodyで短縮URLが得られる。
スクリーンショット 2020-04-12 20.22.33.png

#Postmanの実行結果「Responses」をファイルで取得

複数の短縮URLは生成されたが、Postman上ではプロパティから値を確認できるだけ。一個一個確認するのは手間なので、実行結果を一気にファイル出力したいと思う。

調べたらファイル書き出し用のコードが用意されていたので、下記手順で実行することでファイルが書き出された。
Write Responses To File
(Github)ResponseToFile-Postman

日本語の説明が見当たらなかったので、念のため記載。

  1. Postmanのネイティブアプリを立ち上げておく
  2. Write Responses To Fileにアクセス
  3. ► Run In Postmanをクリック。アプリが立ち上がるので、collectionをインポート。
  4. ResponseToFile-Postmanを自機にクローン。あるいはコマンドでクローン。git clone https://github.com/sivcan/ResponseToFile-Postman
  5. クローンしたディレクトリを開いてインストール。コマンドはnpm i
  6. ローカルサーバを起動。コマンドはnode script.js
  7. これで実行結果は、新しく生成されるResponsesディレクトリに格納される。

保存されるファイルの拡張子や保存場所を変更したい場合、↑の3でインポートしたcollection「Write Responses To File」を、Edit Collectionで編集。
スクリーンショット 2020-04-13 0.03.57.png

取得例↓
ファイル名:「test_post_1.csv」

{"shortLink": "{Firebaseで生成された短縮URL}}

ファイルは実行回数分生成される。

#おわりに
あとは生成されたファイルをcatでマージし、まとめられたファイルからshortLinkの行を抽出、valueのみ切り出せば、全ての短縮URLが得られる。

参考
ファイルを結合するには
[Excel] データを抽出する方法(フィルター機能)

対象URLのQRコードもほしかったので、GoogleSpreadSheetでQRコードを生成した。

GoogleスプレッドシートのIMAGE関数でQRコードを作成する方法


#追記
短縮URLを複数取得する方法、他にも全然あった笑
URLShorter(フリーソフト) →bit.ly / j.mp
[非エンジニア向け]短縮URLを一括で大量に作る方法 →bit.ly

まあFirebaseなら、「1 つの IP アドレスで 1 秒あたり 5 回、1 日あたり 200,000 回という制限」、bit.lyは「1 分あたり最大 10,000 個のリンクを短縮する。月次最大数は、1 カ月あたり 10,000 個」らしいので、用途に応じて選ぶと良いかも。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?