見出し画像

スプレッドシートで、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とマージしたいときとかは、スプレッドシートだと直感的に操作できるので便利なのです。

よかったらお試しください。

この記事が気に入ったらサポートをしてみませんか?