簡単なインターフェイス
ツール名は「Total 3months」にしました。 最初は「Access 3months」でしたが、ツール名一覧で「A」で始まるツールが多すぎるので、分散をさせる目的です。
先ず最初に作ったのは、簡単なインターフェイスです。 3個のボタンを用意し、それぞれ「今月」「先月」「先々月」のデータを配列に取り込む処理を実行します。
下は、このスイッチパネルです。(そっけないです)「0」は「今月」、「1」は「先月」、「2」は「先々月」のデータを取り込みます。
データを配列に取り込むコード
以下は、パネルのクラス名を「sw_panel」、「0」ボタンのクラス名を「a0」として、ボタンのクリックで集計コード「get_data()」を起動するコードの雛形です。
「if(location.search.includes('unit=this_month'))」の条件付けで、「今月」のデータを表示している時にのみ、「a0」ボタンでデータを取り込める仕組みです。 一度クリックすると「a0.disabled=true;」でボタンが無効化し、重複して取り込めない様になります。 自分で使うだけなら「重複」を防ぐ仕組みは要らないですが、一応「汎用」を考慮します。
このコードを「a0」「a1」「a2」と3個並べて、インターフェイスは一応完成です。 集計操作をリセットしたい時は、「アクセス解析」のページをリロードすればリセットの代用になるので省略します。
下は、「0」ボタンをクリックした後で、このボタンだけ無効化された表示です。 ブラウザのデフォルトデザインなので印象が薄いです。 無効化のデザインは改める予定です。
集計する関数「get_data()」
「get_data()」は。パネルのボタンで一覧表のデータを「配列」に取り込む操作を行います。 ここがツールの要所です。
先ず、一覧表の全行を取得します。 その各行に関して、「記事のID」「記事のタイトル」「記事の閲覧数」を取り出し、子配列の「id, title, ac_count」を作り、それを最終的な集計用の配列「total」に追加して行きます。
この様な配列を更に纏めた配列構造を「2次元配列」と言いますが、このタイプの配列はツール制作では良く使います。 この大元の配列を操作して、集計したり、その結果をソートして一覧表にしたりします。
「id」「title」「ac_count」を取り出す 3種の処理を並べていて、最後にそのデータを配列の「total」に追加するまでが、ひとつのサイクルです。 この作業を、一覧表の全ての行で繰り返して、「total」にデータを集めます。
「アクセス解析」の「各月」の一覧表は、デフォルトで「50件」、「もっと見る」を押すと「100件」の行があるので、このツールのボタンを押せば、それが「total」に取り込まれます。
これから追加が必要な処理
上のコードでは、1回目のボタン操作で「今月」のデータを配列に取り込めますが、続けて「先月」のデータを取り込むと、「total」の中身は「今月」+「先月」になってしまいます。
全ての月の集計を目的にする場合は、ここで重複する記事IDのデータを纏める処理が必要です。 この関数は次回で作ります。

