[PowerShell]Qiitaの自分の記事の閲覧数（View数）一覧を取得する

# 概要

Qiitaで記事を書いたことある人なら知ってると思いますが、自分が書いた記事は閲覧数を見ることができます。
ただ、これは各々の記事の画面でしか見れないため、すべての記事の閲覧数を一覧で見るようなことはできません。
そこで、Qiita APIを使って取得したものを加工して一覧化します。
[ググってみると既に同じようなことをやっている人はたくさんいましたが](https://www.google.com/search?rlz=1C1GCEA_enJP797JP797&ei=6OwwYJeGONOnoASNz4eIBQ&q=qiita+%E9%96%B2%E8%A6%A7%E6%95%B0%E3%80%80API&oq=qiita+%E9%96%B2%E8%A6%A7%E6%95%B0%E3%80%80API&gs_lcp=Cgdnd3Mtd2l6EAM6BQgAELADOgQIABAeOgQIIRAVUN91WO57YKd_aAFwAHgAgAF9iAG7BJIBAzAuNZgBAKABAaoBB2d3cy13aXrIAQHAAQE&sclient=gws-wiz&ved=0ahUKEwiXmtTXqPjuAhXTE4gKHY3nAVEQ4dUDCA0&uact=5)、PowerShellでやっている人が見当たらなかったのでWindows使いの人がサクッと試せるようにPowerShell版を残しておきます。

# 事前準備（トークン発行）

https://qiita.com/settings/applications

この画面から「個人用アクセストークン」を新しく発行します。すでに発行してある場合は不要です。
スコープは`read_qiita`だけで十分です。

# コード

Headerにトークンを付けて`Invoke-RestMethod`を https://qiita.com/api/v2/authenticated_user/items に対して実行すると自分が書いた記事の一覧を取得できます。ただし、以下の注意点があります。

* デフォルトでは20個しか取得できない
    * `per_page`または`page`をパラメータに指定することで対応する
* 上記URLでは、閲覧数（`page_views_count `）が`null`で取得されてしまう
    * 最初にIDの一覧だけ取得し、次に各記事の情報を取得することで対応する
    * 閲覧数以外の情報（LGTM数など）は上記URLからでも取得できる

下記コードでは`per_page`を適当に100にしていますが、100個以上記事を書いている人は適宜書き換えてください。
大きすぎる値を指定するとエラーになってしまうため、より汎用的なコードにしたい場合は`page`パラメータを使って0が返ってくるまでループさせてすべてのIDを取得するといいと思います。

```powershell
$TOKEN = "ここに上記で発行したトークンを記載する"

# per_pageを指定しないと20個しか取れない（最大数が決まっているようで、1000とか指定するとエラーになる）
$ids = (Invoke-RestMethod -Headers @{Authorization = "Bearer ${TOKEN}"} https://qiita.com/api/v2/authenticated_user/items?per_page=100).id
$articles = $ids | %{
    Invoke-RestMethod -Headers @{Authorization = "Bearer ${TOKEN}"} "https://qiita.com/api/v2/items/${_}" 
}
# 見たいプロパティでソート（private公開になっているものは除外する）
$articles | ?{!$_.private} | Sort-Object -Descending -Property page_views_count | ft created_at, page_views_count, likes_count, title
```

出力結果

```text
created_at                page_views_count likes_count title                                          
----------                ---------------- ----------- -----                                          
2017-07-23T16:16:05+09:00            30931          17 PowershellでExcelの表をオブジェクト化して取得                 
2016-08-15T01:52:48+09:00            30805          15 [Powershell]自作オブジェクト作る練習                       
2018-03-18T22:30:34+09:00            14854          31 PowerShellで簡単にExcel触れるようにする方法を考えてみた            
2018-03-22T07:32:44+09:00            10788          11 PowerShellで簡単な画像処理する            
2018-01-07T07:48:28+09:00             6390          11 PowershellとRLoginで大量サーバ管理                      
2018-11-18T19:22:46+09:00             5704          18 FlaskでAPI作って素のJavaScriptでAPI実行する        
以下略
```

PowerShellで調べて辿り着く人が多いんですかね。
ちなみに`likes_count`でソートするとこうなりました。コンテナのログの記事がなんかLGTMの割合高いですね。

```text
created_at                page_views_count likes_count title                                          
----------                ---------------- ----------- -----                                          
2018-03-18T22:30:34+09:00            14854          31 PowerShellで簡単にExcel触れるようにする方法を考えてみた            
2019-07-29T02:58:20+09:00             3827          29 DockerコンテナのロギングにGrafana＋Lokiを試してみた             
2018-11-18T19:22:46+09:00             5704          18 FlaskでAPI作って素のJavaScriptでAPI実行する               
2017-07-23T16:16:05+09:00            30931          17 PowershellでExcelの表をオブジェクト化して取得   
以下略
```