スプレッドシートで、GAデータを自動更新するためのGASを書いた。
仕事柄Google Analyticsのデータを日々見ることが多いのですが、GAって結構重いですよね。地味に読み込みまで時間かかります。ただ、直接BIとつないだりできる昨今の時代なので、あまりニーズもないかもしれませんが、スプレッドシートでの管理について書いてみます。
スプシのアドオンが便利って話
もうこれはいろんなところで記事があるので、この辺を読んでみてください。自動化・スケジュール化もできるしとっても楽です。
※公式もあるよ。
何を自動更新するGASを書いたか?
↑の記事にあるスプレッドシートのアドオンは、指定された範囲のデータをレポートタイトルごとにシートに書き出すので、日付を関数などで指定して繰り返し更新の設定をしても、毎回最新データにはなるものの古いデータは上書きされて消えていきます。そのため、前回取得していたデータが蓄積できまへん。(スナップショットを見るためのものになる)
そこで、アドオンによって抽出されたデータを、別シートに書き出す(アーカイブする)スクリプトを書きました。例としてはこんなイメージ。
- 1/31
<アドオン>
前日(1/30)時点の記事別のPV数を、シートAに自動抽出
<GAS>
取得されたデータを、シートAからシートBにコピペ。
- 2/1
<アドオン>
前日(1/31)時点の記事別のPV数を、シートAに自動抽出(1/30時点データは上書きされて消える)
<GAS>
取得されたデータを、シートAからシートBにコピペ。(すでにコピペされている1/30時点データの下に追加=シートBには、1/30と1/31のデータが蓄積される)
実際のスクリプトはこんなんです。
function myFunction() {
//スプレッドシートのシート名からコピペ元、コピペ先を特定
const fromsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シートA');//コピー元のシート名(レポート名)を記載
const tosheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シートB');//コピー先のシート名を記載
//それぞれのシートの最終行を取得
const fromlastRow = fromsheet.getLastRow()
const tolastRow = tosheet.getLastRow()
//コピーする範囲と貼り付ける範囲を取得_rangeでは、(何行目の,何列目を基準に,縦に何行,横に何列)を対象とするか選択
//GAスプレッドシートアドオンのデータの場合、実データが16行目から入るのでそのように選択。
//列数は自分が抽出しているレポートデータの列数に合わせる。(サンプルでは3)
let copyRange = fromsheet.getRange(16,1,fromlastRow-15, 3);
let pasteRange = tosheet.getRange(tolastRow+1,1,fromlastRow-15, 3);
//コピー範囲をペースト範囲に貼り付ける処理
copyRange.copyTo(pasteRange);
}
あとはこれを、スプレッドシートアドオンの起動時間よりも後の時間で、トリガー設定すれば、自動で処理されてデータが溜まっていきます。
これやることのメリット
いやいやGAで見ればえぇやん、とか、BIでやれば良くない?とか言われたら、「おっしゃるとおり!」なんですが、カスタムディメンションとかユーザーIDとかをGA上に持たせていて、それをキーにして別のデータやFLGとマージしたいときとかは、スプレッドシートだと直感的に操作できるので便利なのです。
よかったらお試しください。
この記事が気に入ったらサポートをしてみませんか?