ラベル google spreadsheet の投稿を表示しています。 すべての投稿を表示
ラベル google spreadsheet の投稿を表示しています。 すべての投稿を表示

Google Spreadsheetの公式add-on 'Google Analytics'が更新しV4対応したものの機能はV3とほぼ同等

Google Spreadsheetで公式に提供されていたGoogle Analytics Add-onが更新されました。
ユーザ数が今日現在で400,062人。

今までの設定シートはコピーされ新しいフォーマットである `Report Configuration` が作成されることでユーザが何か作業を必要とする必要はなく移行が完了していますが、あくまでV3版をV4に置き換えをしただけのようです。


GoogleがAPIのバージョン4を出してから、Google側もアップグレードしたいだろうなーとは思っていました。今年のはじめあたりにGoogle API Console側からV3の設定メニューを恐らく事故だと思うのですが消えていたりしましたし。

左がV3、右がV4

復活したもののすでにアイコンすら無くなっていますけどw
移行は自動で完了したもののV4としての恩恵は受けられません。V4で実現可能な

  • 2期間のデータ比較
  • pivot
  • cohort
  • LTV
あたりは実現されません。(参考)
またdimensionやmetricの書き方等はV4のJSONの記述をそのまま許容するという苦肉の策が取られています。(ドキュメント)


基本的にV3のように指標のカンマ区切り、改行区切りで記述することを許容しつつJSONフォーマットも許容すると。
仕方ないかなと思いつつも思わず苦笑いするところですね。V4のパラメータを一部hidden parametersとして指定を可能としていますがsampling levelに関しては旧addonでも存在していたのでデフォルトで指定できるようにしてあげても良かったんじゃないかと思ったりはします。移行に際して今までもEnumだったのでそのまま `LARGE` 等へ置換してあげればいいだけですし。

このあたりSpreadsheetでは列が非表示となっているようです。



個人的には去年暮れあたりからV3の利用、addonの利用は停止していますが過去に作ったファイルの一部が利用していたので50通くらいメールで「アップデートしといたから!」という内容を受信しました…
今日中に必要なものの9割は利用停止とV4移行を個人で行ってしまおうかと思っています。

Analytics APIのセグメントでシーケンスを利用したパターン

Google AnalyticsのAPIで利用できるセグメントは色んな実際のパターンを使いながら覚えていこうと思いますが、単純なパターンでのテストです。

まずはユニバーサルアナリティクスで同一User Idを用いてPC → モバイル → モバイルとアクセスをしてみます。
PCはChrome、スマートフォンはAndroidのChromeです。


Analytics画面で見ると1ユーザー、セッション3と計上されています。


User Idもテストでカスタムディメンションに入れていますが、こちらもちゃんとデータが計上されています。


■テスト

セグメントの指定でこの5パターンはキレイに値が取得できました。全て同じ結果が得られます。

  • users::sequence::ga:deviceCategory==desktop;->ga:deviceCategory==mobile
  • users::sequence::^ga:deviceCategory==desktop;->ga:deviceCategory==mobile
  • users::sequence::^ga:deviceCategory==desktop;->ga:deviceCategory==mobile;->ga:deviceCategory==mobile
  • users::sequence::^ga:deviceCategory==desktop;ga:browser==Chrome;->ga:deviceCategory==mobile;ga:browser==Chrome
  • users::sequence::^ga:deviceCategory==desktop;ga:browser==Chrome;->ga:deviceCategory==mobile;ga:browser==Chrome;->ga:deviceCategory==mobile;ga:browser==Chrome



スコープも利用してみた感じですが、同じ値が得られたものはこんな感じです。

  • sessions::condition::perSession::ga:pageviews==1
  • sessions::condition::ga:browser==Chrome;condition::perSession::ga:pageviews==1
  • users::sequence::ga:deviceCategory==desktop;->ga:deviceCategory==mobile;condition::perSession::ga:pageviews==1


実はまだScopeも指定してコンディションとシーケンスの合わせ技は、安定して取得できていませんので、もう少しちゃんとヘルプを読んで理解する必要がありますが、使いこなせればコホート分析は結構楽になりますね。

Google SpreadsheetのAddon「Google Analytics」は大量データでも動いて素晴らしい

既に色んな方が利用されていますが、Google SpreadsheetのAddon機能にある「Google Analytics」 ですが、大量データでも普通に動いて凄いですね。


Google公式ということもあって、最近あったAnalytics APIのMetrics系の名称変更も、変更当日からAddon側も新しくなっていました。
ただ一点心配なのは、Reportのレイアウト変更です。レポート設定を変更することでレポートレイアウトが変更されることはありますが、Google起因で変更されないかが個人的に心配だったりします・・・

「アドオン」メニューから「Google Analytics」を探してみてください。


「+ FREE」でインストールしてください。


今まではGoogle Apps側で書いていたのですが、大量データの場合データが全部取得できずタイムアウトエラーになることもしばしば。
少ないリクエストなら全然問題なかったのですが、今回マーケティング系の社内向けレポートのデザイン変更を期にアドオンへ変更。

基本パターン

早速一つレポートを作ってみます。
Spreadsheetの「アドオン」メニューからレポートを作成します。

「レポート名」 : シート名にもなります。

「アカウントインフォメーション」は、Analytics画面のこの部分になります。
※ちょっと小さい画面でゴメンナサイ。



ちなみに、今回の内容とは異なりますが、URLにアカウント番号やプロパティ番号、ビュー番号が書かれています。

Analyticsを見た時のURLですが
visitors-overview/a999999w99999999p99999999/

a : アカウントID
w : ウェブプロパティID(web property)
p : ビューID(Profile)

です。

「Metrics」、「Dimensions」 : こちらから取得したい指標を探す
このMetricsとかDimensionsあたりが、取っ付きにくい部分だとは思っています。

例えば・・・セッション数のデータを特定期間で日ごとに見たい場合、
Metrics -> ga:sessions
Dimension -> ga:date
となります。

例えば・・・ブラウザごとのセッション数を見たい場合、
Metrics -> ga:sessions
Dimension -> ga:browser

となります。

Metricsが実際の計測数値、指標です。Dimensionは切り口ですね。
レポート設定が終わったら、また「アドオン」からレポートを作成することになります。
例えばレポート名で「Rollup」を作っておくと、新規シートに「Rollup」が追加されます。



※レポートは必ずアドオンから追加しないとダメのようです。勝手に追加をしてもレポート作成で失敗します。

応用パターン

レポートを一つ作成してみると分かると思いますが、もっと色んな値を指定できます。指定できる値と入力必須項目は以下の通りです。

Name Required
Report Name no
Type no
View (Profile) ID / ids yes
Start Date yes
End Date yes
Last N Days no
Metrics yes
Dimensions no
Sort no
Filters no
Segment no
Sampling Level no
Start Index no
Max Results no
Spreadsheet URL no

まだちゃんと利用したことのないものもありますが、「Sampling Level」と「Spreadsheet URL」以外は昔から使っていました。

■Report Name

Addonで設定作成時に入力
シートの名前にもなります。動きとしてはレポート名称がシート名として存在しない場合はシートが新規に作成され、存在している場合はそのシートにレポートが出力されます。
逆に言うと、レポート名を修正したら、それに対応するシート名も一緒に修正してあげれば無駄なシートが増えることもなく、そのシートにちゃんとレポートが出力されます。

 

■Type

※デフォルト「core」で出力
値は「core」か「mcf」が入ります。基本的には「core」で問題ありませんが、マルチチャネルファネル系のAPIを利用する場合は「mcf」を指定して、mcf専用のAPIを利用する必要があります。

例えば・・・アシストコンバージョン数をソースごとに出力する場合は
Metrics -> mcf:assistedConversions
Dimension -> mcf:source
を指定します。

View (Profile) ID / ids

※Addonで設定作成時にプルダウンで入力


Start Date / End Date / Last N Days

※設定を作成すると自動的にLast N Days欄に「7」が入ります。これは前日を含めて、その前7日間を示します。
動きとしては、「Last N Days」に数値が入っていた場合そちらが優先され、入っていなかった時のみ「Start Date」と「End Date」を見るようです。

「Start Date」と「End Date」は「yyyy-mm-dd」の形式で入力するか、「today」「yesterday」、「7daysAgo」のような相対的な表記で入れます。

当日1日の期間内にタイムセールを行ったりと、機動的なマーケティングを行うのであれば「today」を入力してDimensionで「ga:hour」を入れて時間ごとのアクセス数を見るのもイイかもしれません。

僕の場合はいつも「yyyy-mm-dd」の形式で入れたりしているので、たとえば数式で

=text(today()-2,"yyyy-mm-dd")

と数式を埋め込んで動的に動かしていたりします。

■Metrics

Addonで設定作成時に入力
取得したい数値指標を設定します。セッション数(ga:sessions)とか直帰数(ga:bounces)とか。複数の指標を一気に取得したい場合はカンマ区切りかセル内で改行をして指定します。Typeでcoreを選んでいる場合とmcfを選択している場合で入力可能な指標が異なるので注意!


レポートが増えるとデータの取得に時間がかかるので、できるだけ一度に全て取得するようにしましょう。
上の例は「ユーザー数」「セッション数」「平均サイト滞在時間」「ページビュー数」の例です。

Tips
平均サイト滞在時間など、一部「秒」で返ってくる値があります。それを時刻へ変換するには出力された値を以下の様な計算式で変換してみてください。

=text(time(0,0,[秒数]),"hh:mm:ss")

■Dimensions

Addonで設定作成時に入力可能
取得したい切り口を設定します。ブラウザー(ga:browser)とかブラウザーバージョン(ga:browserVersion)とか。複数の指標を一気に取得したい場合はカンマ区切りかセル内で改行をして指定します。Typeでcoreを選んでいる場合とmcfを選択している場合で入力可能な指標が異なるので注意!


例えば、上の例は「ユーザー数」「セッション数」「平均サイト滞在時間」「ページビュー数」を日次(ga:date)で出力するという設定です。
「Last N Days」で「7」と入力されていた場合、昨日までの7日間、日次で各項目の数値が出力されます。

■Sort

出力されたデータの並び替え(昇順・降順)を指定します。例えば日付順であれば「ga:date」、セッションの昇順であれば「ga:sessions」ですが、逆の降順は頭に「-」をつけて「-ga:sessions」となります。

また、ソートする指標を複数指定することもでき、カンマ区切りかセル内で改行をして指定します。

■Filters

MetricsやDimensionsに対してフィルタをかけることができます。僕はいつもDimension側に正規表現でフィルタをかけてしまうことが多いのですが、例えばランディングページURLが「/index.html」で終わっているページを指定する場合はこんな感じです。

ga:landingPagePath=~^/index\.html$

MetricsとDimensionでかけかたが変わりますので、以下を参考にしてみてください。

Metricsのフィルタ
Operator Description
== 等しい
!= 等しくない
> より大きい
< より小さい
>= 以上
<= 以下

Dimensionのフィルタ
Operator Description
== 等しい
!= 等しくない
=@ 含む
!@ 含まない
=~ 正規表現一致
!~ 正規表現に一致しない

■Segment

アドバンスセグメントや、ダイナミックセグメントを指定しますが、これは非常に強力な機能である反面、かなり難しい部分でもあります。
まずは簡単なアドバンスセグメント(Built-in系)指定です。

gaid::-1All Sessions
gaid::-2New Users
gaid::-3Returning Users
gaid::-4Paid Search Traffic
gaid::-5Non-Paid Search Traffic
gaid::-6Search Traffic
gaid::-7Direct Traffic
gaid::-8Referral Traffic
gaid::-9Sessions with Conversions
gaid::-10Sessions with Transactions
gaid::-11Mobile and Tablet Traffic
gaid::-12Non-bounce Sessions
gaid::-26Tablet Traffic
gaid::-2Bounced Sessions
gaid::-28Mobile Traffic
gaid::-29Tablet and Desktop Traffic
gaid::-100Single Session Users
gaid::-101Multi Session Users
gaid::-102Converters
gaid::-103Non-Converters
gaid::-104Made a Purchase
gaid::-105Performed Site Search
※昔は自分で作ったカスタムセグメントも指定できたのですが、今はもしかすると無理かもしれません。まだ未確認です。

また、このSegment欄にはダイナミックセグメントを指定することもできます。
ある条件を満たすユーザーを指定する場合は「users::」で始まります。またある条件を満たすセッションを指定する場合は「sessins::」で始まりますが、ここで条件の設定方法を説明しますが、ここは1ページさいてちゃんと説明しないといけないほど、かなり複雑です。

★conditionについて(condition::)
例えば、最低でも一回のアクセス(セッション)がChromeブラウザからアクセスをしているユーザーのみを指定する場合は

users::condition::ga:browser==Chrome

と書きます。
Chromeブラウザを利用しているセッション数を知りたい場合は

sessions::condition::ga:browser==Chrome

と書きます。
次に、例えば少なくとも1回でもChromeブラウザからアクセスしてきているユーザーでかつ、地域が「東京」に属するセッションに絞る場合は

users::condition::ga:browser==Chrome;ga:region==Tokyo

と書きます。
ちなみに条件式の「;」はANDを示し、ORは「,」となります。
例) ga:browser==Chrome,ga:browser==Firefox

つまり、こう書いた場合
users::condition::ga:browser==Chrome,ga:browser==Firefox;ga:region==Tokyo
少なくとも1回はChromeまたはFirefoxでアクセスしてきたユーザーで、かつ地域が東京のセッションとなります。

複数のConditionを書くこともできます。
users::<condition1>;<condition2> 
users::<condition1>users::<condition2>

もちろん条件指定なので、こういう書き方もちゃんとできます。
users::condition::ga:revenue>10;ga:sessionDuration>60

慣れるまでは難しいですよね。

★Sequenceについて(sequence::)
これはユニバーサルアナリティクスをかなり意識したものになりますが、先ほどのConditionは単なるセグメント条件を指定したものですが、Sequenceを指定すると順序の指定が出来るようになります。例えばモバイルで閲覧し、次にデスクトップで閲覧したユーザーなど。

Seauenceを利用すると「->>」「->」の2つの条件が利用できます。
「->>」は単なる前後の条件を示しますが、「->」は直接の前後の条件を示します。

例えばデスクトップを利用し、次のアクセス時にタブレットを利用したユーザーのみを絞り込む場合は

users::sequence::ga:deviceCategory==desktop;->ga:deviceCategory==tablet

と書きます。
逆にデスクトップ以外を利用していたユーザーで、次のアクセス時にタブレットを利用したユーザーは

users::sequence::!ga:deviceCategory==desktop;->ga:deviceCategory==tablet

と書きます。
また、初めてのアクセス時にデスクトップを利用していて、次のアクセス時にタブレットを利用したユーザーは

users::sequence::^ga:deviceCategory==desktop;->ga:deviceCategory==tablet

と書きます。

■Sampling Level

「DEFAULT」、「FASTER」、「HIGHER_PRECISION」の3つの値をとります。これはAnalyticsの精度を優先にするかパフォーマンスを優先にするかという摘みと同じです。


■Start Index

表示する結果の開始位置を指定できます。

■Max Results

表示する結果の個数を指定できます。
例えばDimensionでブラウザを指定した場合、50個も100個も出てきてもマニアックなブラウザだったりユーザーエージェントが偽装された変なブラウザが出てくるだけだったりしますので、上位10個とか指定をしておく方が良い場合があります。

■Spreadsheet URL

レポートを吐き出す先のSpreadsheet URLを入れておくと、その指定されたSpreadsheetにレポート名でシートが作成され、レポートが吐出されます。

ざっくりとした説明ですが、Googleのヘルプはこちらです。
最も強力で最も難しい「セグメント」だけは自分で色んな条件でデータを取得してみないと、なかなか理解が進まないと思います。
ユニバーサルアナリティクスになり、だいぶアクセスしてくる順序などの取得が重要になってくるようになりました。ぜひSequence部分も押さえておきましょう。

Google Spreadsheetで自分用の簡単なメール送信予約スクリプトを作る。

Google SpreadsheetではExcelで使える数式でガツガツ作りこむことも可能ですが、その場合シートがどうしても重くなりがち。

Query関数で引っ張ったほうがサクッといくことがあります。
今回はQuery関数を使って、前から作っておきたかった簡単なメール送信予約シートを作りました

今までChromeの拡張を使ったりしてたのですが、有料ですとかフリーミアムモデルで途中から有料ですとか言われたものの、そんなものSpreadsheetで作れるのに有料とかいい商売してるなーと感じてました。

Spreadsheetに簡単なフォームを生成して、あとは1分おきとか5分おきにScriptを回しておくだけ。




1時間くらいで作ったというのもあって、変数定義の部分の変更くらいはいれようかなぁ。
ま、こんなスクリプトを書いてみました。



var sheetNumber = 1
function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[sheetNumber - 1];
  var now = new Date();
  var nDate = now.getYear() + "/" + parseInt(now.getMonth() + 1) + "/" + now.getDate();
  var nTime = now.getHours() + ":" + now.getMinutes() + ":00";
  sheet.getRange("J1").setValue(nDate);
  sheet.getRange("K1").setValue(nTime);
  sheet.getRange("A1").setFormula('QUERY(\'Form Responses 1\'!A:F;\"select * where E = date \"&text(J1,"\'\'YYYY-MM-DD\'\'\")&\" and F = timeofday \'\"&K1&\"\'\")');
  var rows = sheet.getLastRow();
  var dataCount = rows - 1;
  var emailAddress,subject,message,dataCount2;
  if(dataCount > 0){
  for(var i = 0 ; i < rows-1 ; i++){
    emailAddress = sheet.getRange(i+2,2).getValue();
    subject = sheet.getRange(i+2,3).getValue();
    message = sheet.getRange(i+2,4).getValue();
    MailApp.sendEmail(emailAddress, subject, message);
  }
    
    var latestDate = sheet.getRange(rows,5).getValue();
    var latestTime = sheet.getRange(rows,6).getValue();
    sheet.getRange("M1").setValue(latestDate);
    sheet.getRange("N1").setValue(latestTime);
    sheet.getRange("A1").setFormula('QUERY(\'Form Responses 1\'!A:F;\"select * where E = date \"&text(J1,"\'\'YYYY-MM-DD\'\'\")&\" and F > timeofday \'\"&K1&\"\'\")');
    rows = sheet.getLastRow();
    dataCount = rows - 1;
    sheet.getRange("A1").setFormula('QUERY(\'Form Responses 1\'!A:F;\"select * where E > date \"&text(J1,"\'\'YYYY-MM-DD\'\'\"))');
    rows = sheet.getLastRow();
    dataCount2 = rows - 1;
    if(dataCount == 0 && dataCount2 == 0){
      DeleteSheet();
    }
  }
}
function DeleteSheet() {
    SpreadsheetApp.flush();
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[sheetNumber];
    var datarange = sheet.getDataRange();
    var lastrow = datarange.getLastRow();
    var values = datarange.getValues();
    for (i=lastrow;i>=2;i--) {
        var tempdate = values[i-1][2];
        {
            sheet.deleteRow(i);
            function deleteAllResponses() {}
        }
    }
}
function deleteAllResponses() {
  var form, urlForm = SpreadsheetApp.getActiveSpreadsheet().getFormUrl();
  if (urlForm) {
    form = FormApp.openByUrl(urlForm);
    if (form) form.deleteAllResponses();
  }
}


追記1)シートが重くならないように一定条件でデータを削除するフローを追加と、それに伴う一部ソースを修正しました。

Google AnalyticsデータをGoogle Spreadsheetで取得して集計する 【2013年α版script】無料でデータを取得したい!

1ヶ月ほど前から、今までの方法でGoogle SpreadsheetからAnalyticsのデータを取得することが出来なくなっています。
完全にOAuth2認証が必須になっているようです。

海外無料ツールも最近有料になったりして、自分で何とか作れないものかと思い、まだ酷い状態ですが、簡単にScriptを作ってみました。

Scriptを見る
※閲覧はGoogleアカウントが必要なようです。

エラー処理が中途半端だったり、色んな制約が発生しています。
改善の余地がありまくる無駄なScriptですが、少しずつ改良出来ればと思っています。

■使い方

1.Google Spreadsheetを新規に作成して、「tool」から「Script editor」を開く

2.Scriptを貼る



3.適当な名前を付けてScriptを保存した後に、「File」から「Upgrade authorization experience」を選択する。
※イケてなさすぎる点!!

4.「Yes」を選択。
要するに、Scriptを実行する人ごとに認証が求められるということ。。。これ、イケてない。。。
※一応、Googleのヘルプを見ている限り、この操作無くAPI Keyを保存しておけばイケるはずなんですが、色々試しても解決出来なかったので・・・


5.「Resources」から「Use Google APIs」を選択


6.Google APIs Servicesの中からAnalyticsをon!

7.「on」になったことを確認したら、フッターの「Google APIs Console」のリンクをクリック
※本当はauthorization experienceを同意していない場合、ここでAPI Keyを入力する必要がある。


8.飛んだ先のページでAnalytics APIを「on」に。



9.再びScriptの画面に戻って、一度ScriptをRunする。


10.ここで認証が求められるので、「Authorize」を選択。


11.「アクセスを許可」で認証通過!



■使い方
数式として使います。

式の形式は
getData(profileId, metrics, startDate, endDate, filters, dimensions, segment, sort, startindex,
maxresults)

赤字は必須項目です。

それ以外は一応、必須じゃないので省略して構わないのですが、式を動かしてみた際、色々とエラーが発生したので、裏側ではダミーで値をもたせていたりします。

項目の説明はGoogleのヘルプページが一番詳しいです。

ちなみにprofileIdはAnalyticsのURLからも分かりますが、ツールまたはScriptを組んで調べたほうが早いかもしれません。

URLの場合は「~/visitors-overview/a[account ID]w[web property ID]p[profile ID]/」こんな構造になっていますので、「profile ID」を拾ってしまえばOKです。

ツールやScriptに関しては私は有料ツールの無料1ヶ月期間に取得してしまいました。


■残りの項目説明
【metrics/dimensions】
Googleのこのページに書かれている左側がdimension、右側がmetricsです。

Metricsは結果として欲しいデータ、dimensionは切り口みたいなものです。
例えば、先週一週間の日次セッション数を出力したい場合、metricsに「visits」(セッション数)、dimensionに「date」(日次)を指定すれば完了です。

【startDate、endDate】
解析期間のはじめと終わり

【filters】
dimensionまたはmetricsのフィルタです。
filterで使える表現については、Googleのヘルプを参照してください。

【segment】
Advanced Segmentです。「すべて」は「-1」だったり、自分で作ったカスタムセグメントは数字の桁数が多いIDをそれぞれ持っています。

【sort】
単純なソートです。
複数のkeyを入れられますが、先頭から順に第1ソートキー、第2ソートキーとなるようです。

※Spreadsheetで集計していていつも思う不満が、ウェブで出来る「加重」ソートが出来ない事です。ウェブサイトのURL的には「smart」とか付いていたような気がしますが、このAPIを使ったソートでも実装して欲しいなぁ。。。

【startindex/maxresults】
開始位置と表示件数ですが、気にすべきは表示件数の方かもしれません。
ただ、Spreadsheetと連携させたデータ取得では、あまりデータ数を取得することが出来ないと考えておいたほうがいいです。


■制約事項
色々ありますが、、、最大の制約事項は「認証」をするため、そのSpreadsheetのアカウントに解析したいAnalyticsのユーザー権限または管理者権限が付与されていなければならない事でしょう。

一応gmailアカウントだけでなく、企業が使うAppsでも利用できましたので、その辺りでの差別はありません。


■最後に!!
言い訳ですがw
僕、エンジニアじゃないんでソースの中途半端感は許して!w

でも、色々とご指摘いただけると嬉しかったりします。

【Google Analytics】Google Spreadsheetで自動集計(レポート作り 5日目:目標設定データの取得)

1日目

少し時間が空きました。最近、Analyticsを使ったユーザ分析を色んな側面からアプローチしているところですが、数字を見ながら仮説、予想をたてて、数字を取得し検証してみるという流れを繰り返し、繰り返し。思わぬ発見もありますが、これがなかなか根気のいる作業。
ただ、一回は影響がないと思えても、全てのデータを取得しておくことが必要だと考えています。適切なKPIの認識だけでなく、顧客の行動や心理がなんとなくでも分かるようになり、ウェブページ構成を考える上で必要となるペルソナの確定にとても重要なデータをもたらします。

今回からはAnalyticsの目標設定や、業種によって異なるレポートになってくる場所なので、本当に参考までとなりますがご紹介します。

【目標到達プロセス】
このシートでは、予め登録している目標設定の到達率(離脱率)を把握するためのシートです。

参考シート

今回のシートでは「注文」と「会員登録」の2つの目標設定を事前に行なっているという前提で話をします。



さて、目標に関するデータの取得方法から始めましょう。
目標に関しては、設定したページのどこで最も離脱が発生しているのかという事を見ることも重要ですが、EFO対策を実施している最中だったり、特段直近で対策を打つ予定がないのであれば、このシートのように到達率という形で、その値が異常値でないかどうかの監視のみをするだけで良いと思います。

では、早速。
Googleのリファレンスを見ると、今回、目標番号の合計開始数を見たいので、「goal(n)Starts」を使います。

これは、目標1であれば「goal1Starts」、目標2なら「goal2Starts」となります。目標番号は、Analyticsを開いて、「コンバージョン」メニューを開くと、「ユーザーが達成したコンバージョン数」のところに、事前に設定した「目標1:~」のような記載があると思います。この数値が目標番号です。

getGAdata(C1,C2,"ga:goal1Starts",B4+1,B5+1,,,,,)

のような形で使います。
次に、終了プロセス数ですが、今度は完了数ということで「ga:goal(n)Completions」を使いましょう。
前と同様に目標1なら「ga:goal1Completions」となります。

真ん中にある四角は、視覚的に見せるためのメーターです。



ここは、色んな見せ方があると思います。私は簡単に、10%区切りでメモリを作って、10%超えるごとに色を付けていくという方法です。

さて、次にあげた購入に直結しているランディングページ、カート投入上位は、どうやってフィルタをかけるかが重要になります。用意したスプレッドシートでは右下の「購入につながるランディングページ」はページのカテゴリ別、右下にある「購入直結ランディングページ」は具体的なページ別の上位を示しています。書き方はお任せしますが、大きく分類で見る方法(森)と、細かくページを見る方法(木)の2種類を用意しています。

上位10ページでは足りない事もあると思いますが、見せる対象者によって変化させて良いと思います。急に売れ始めた商品やカテゴリがわかれば良い、または今一番うれている物がどんなものなのかが分かれば良いと考えるなら、この程度で良いでしょう。まず、詳細に分析する時間が、通常取れないと思いますし。

このあたりは考え方を学んでいただければ良いです。そして、ここがわかれば、あとは自由自在に数値を取得出来るようになるでしょう。

まずは、どうやってデータを取ればいいのかを考えてみてください。

購入であれば、一つはサンクスページを中心に考えるというやり方があります。
フィルタでサンクスページを閲覧した対象のランディングページを上位10ページ並べるという方法はどうでしょう。

式を組み立てる場合、Googleが提供する有効な組み合わせを参考にしてみるのもいいでしょう。

これを見ると、ディメンションカテゴリで「ga:landingPagePath」を指定した場合、有効な統計情報は「ga:visits」等を除くとされています。試しに、visitsを指定するとデータが取得できませんが、ga:pageviewsを指定するとデータが取得できると思います。

したがって、こんな方法はどうでしょう?

getGAdata(C1,C2,"ga:pageviews",B4+1,B5+1,"ga:pagePath=~<サンクスページ>","ga:landingPagePath",,TRUE,10)

サンクスページに来た人でフィルタをかけて、その人達のランディングページをPV上位順に10個並べる。という式ですね。残りの部分についても式を考えてみてください。


<補足 : Google Analyticsの分析は正規表現を理解していることを推奨します>
今回Spreadsheetを使って数字をどんどん好きなように取得していますが、これをマスターしてもWeb版のAnalyticsから離れられるわけではありません。Webとのデータ照合という意味だけでなく、Webの方が簡単に習得できる場合があるからです。
そして、次回話が出来ればと思いますが、Google Analyticsから大量データを取得する場合もWebが必要です。

そこで、大規模サイトになればなるほど、正規表現を覚える必要が出てきます。正規表現についてはGoogle Analyticsのヘルプを参照いただければと思いますが、これを利用すれば的確に、データを取得出来るようになります。

Analyticsでフィルタをかけるときは、普段から正規表現で書いておきましょう。

例えば。。。
/shop/111111/index.html
/shop/222222/index.html
というページがあっても、正規表現で
\/shop\/([0-9]*)\/index\.html
または
\/shop\/(.*)\/index\.html
と書ければ、まとめてデータを取得できます。

[0-9]は、0から9の任意の数字、*はワイルドカードで直前のアイテムを0回以上繰り返す事をしめすので、要するに数字が任意の数入っているという事を示します。

正規表現を利用して、分析データを簡易に素早く取得出来るようにしましょう。

【Google Analytics】Google Spreadsheetで自動集計(レポート作り 4日目:週分析・曜日分析)

少し間があきましたが、続きをすすめましょう。
4日目は週分析と曜日分析です。
今回は、それほど難しく有りません。エクセルで遊ぶ感覚で作成してみてください。

【週次セッション数遷移】
今までGoogle Analyticsの数値をSpreadsheetで自動的に取得してきました。今回は週ごとの遷移を一目でわかるようにグラフを作成しましょう。2ページ目では日次で取得しましたが、ここで週次でとる理由はなんでしょうか。

ウェブ解析は日々行う短時間の業務と、週次で行う業務、月次で行う業務等、レベルと内容を変えて分析を行うのが通常です。日次で行う確認はAnalyticsの数値が平時と比較して多量のアクセスやアクセスの激減等の現象が計測されていないかを確認するためですが、そのようなアクセスが存在した場合、原因を探るはずです。
そのアクセスが会社にとって良い影響を及ぼしているのか、それとも悪い影響を及ぼしているのか、もしかするとTV等に取り上げられて、販売・マーケティングを行うチャンスなのかもしれません。一方でそのような流入が全く販売、業績に結びつかないものかもしれません。週次でサマリーしてしまうと、そんなアクセスによって右肩上がりのグラフが出来上がっても、結果に結びついていない可能性があるのです。右肩上がりのグラフで上司を喜ばせることができても、その中身がみえていないのでは、もともこもありません。最悪なのはその週に新たに打ち出した施策の好影響だ!と結論づけてしまうことではないでしょうか。

日々の急増、急減でダメージの発生するものについては、即座に報告・連絡をすると思いますが、全社または社長等に報告するまでもないものも存在します。それを補う意味で、日毎と週毎の数値の取得及び遷移グラフが必要という位置づけで作成しています。

では、さっそく週毎の計測に入ります。

まず、計測期間が日曜日~土曜日の方は簡単です。
週計測用のdimensions「ga:week」が存在するからです。
例えば、直近3ヶ月を期間指定して、dimensionで「ga:week」をセットします。

getGAdata(C1,C2,"visits",B4+1,B5+1,,"ga:week",,,)

こんな感じですね。
すると、週番号とセッション数が一発で取得できます。



問題は集計範囲が日曜日から始まらない人。例えば月曜日~日曜日といった範囲で集計する場合は、現状解析開始日と終了日をそれぞれセットするしか有りません。
解析したい期間の開始日、終了日はすぐに分かると思いますが、例えば直近10週を解析する場合、式が10個になります。その場合、Google側の制約等によりタイムアウト等のエラーが発生する率が高くなります。エラーの処理に関しては、2日目の最後に記述しましたので、エラーが発生した場合は、一つずつ潰していきましょう。

【曜日分析】
曜日分析を行っているのは、元々ON/OFF分析、つまり営業日と非営業日の分け方で分析をするという事も念頭にありました。実際には、厳密なON/OFFにはなく、単純な曜日分析になってしまっていますが。

曜日分析はそれほど難しくありませんが、getGAdataで出力される日付は「文字列」だということに注意してください。通常のgetGAdataを日次で出力。

getGAdata(C1,C2,"visits",B4+1,B5+1,,"ga:date",,,)

で出力したあと、その日付(YYYYMMDD)を日付形式に変え、WEEKDAY関数等で曜日を出力してしまってください。
ちなみに、ちゃんとON/OFF分析を行いたい場合は、土日祝日データとそれ以外を分けるか、面倒ですがWorkday関数で営業日だけを取り出すなんていう方法でも良いかもしれません。他にも色々な方法があると思いますが、パッと思いつきませんでした。。。

事前に2011年の祝日リストを日付タイプでリスト化し、営業日をまず出力してしまうといったやり方です。まぁ、どちらの方法でも時間はかからないと思いますが、面倒ですね。




というわけで、今回は簡単ですが、週分析及び曜日分析は終わりです。

【5ページ目を公開しました】
5ページ目

【Google Analytics】Google Spreadsheetで自動集計(レポート作り 3日目:ソーシャルメディア流入)

1日目 >> 2日目 >> 3日目

1日目2日目に続き、今回はソーシャルメディア流入に関する調査です。

Googleなどの検索エンジンがソーシャルメディアで繋がりのある人が紹介したリンクを検索結果に表示するなど、ソーシャルメディアが従来と比較してさらに重要視されるようになりました。今回のレポート作りではそんなソーシャルメディアからの流入を調査するものです。

ソーシャルメディアから流入した人は直帰率や滞在時間等の数値が高いと言われます。ソーシャルメディア経由のユーザー動向調査を行ったり、単に流入数値の分析を行うなど様々な分析を行うきっかけとなれば幸いです。

【ソーシャルメディア流入計測方法】
まず、ソーシャルメディアとして何を計測するかを決めましょう。

今回は、
mixi
Facebook
Twitter
を取り上げます。

プラス追加で、ウェブメール経由の流入も調査しましょう。メーラー経由での流入はURLにrefコードを付けている、またはHTMLメールでutmコードを付けている場合を別にして、基本的にはdirect経由での流入として計測されます。ウェブメール経由の流入を調査することで、顧客が主に利用しているウェブメールがわかり、HTMLメールを作成する場合も該当ウェブメールへのテスト配信、およびチェックをすることでデザインの崩れ等も見ることが出来ます。活用方法は色々ありますし、時間をどれくらいかけるかという点は各々にお任せしますが、一度計測を行ってから考えてみるというのも良いでしょう。

では、さっそくソーシャルメディア経由の流入計測方法です。

今まで使用してきた関数getGAdataでも、今回は参照元URLを絞り込むことで実現します。Analytics画面でフィルタをかけるのと全く同じです。

参照元URLを取得するにはdimensionsの「ga:source」を使います。
関数は

mixiの場合、
getGAdata(C1,C2,"visits",B4+1,B5+1,"ga:source=~mixi",,,,)

という感じです。
フィルタのかけ方についてはGoogleのページをご参照ください。

今回は演算子「=~」の「正規表現の一致を含む」でフィルタをかけています。
私は正規表現の演算子のみでやっていますが、普通に含む検索として「=@」などを利用してもよいでしょう。

同様にFacebookは
getGAdata(C1,C2,"visits",B4+1,B5+1,"ga:source=~facebook",,,,)

Twitterは
getGAdata(C1,C2,"visits",B4+1,B5+1,"ga:source=~twitter",,,,)

でOKです。
自分で計算式を作るときには、フィルタの書き方に注意してください。

という事で、今回は簡単に3ページ目の補足のようなシートですが、4ページ目のご紹介です。

【4ページ目を公開しました】
4ページ目

1日目 >> 2日目 >> 3日目

【Google Analytics】Google Spreadsheetで自動集計(レポート作り 2日目)

1日目 << 2日目 >> 3日目

1日目に引き続き、2日目を投稿します。

まずは、1日目を投稿してみて、意外と反応があり恐縮です。
マーケティングレポートは、コンサル系会社やツール提供会社が出すものばかりで、他社がどんなものを使って分析をしているのかは、全くわかりません。私自身は、レポートというものを殆ど見たことがないので、自分で作り会社で公開しているだけです。
A4、A3サイズ1枚で簡単なレポートが出来れば週次のレポートとしては素晴らしいものになると思いますし、報告対象者が社員向けか、役員向けか社長向けかによって内容も変わります。今回公開しているものは社員・役員両方に向けていますので、簡単な内容から予実管理への言及まで全て入れています。そのあたりも考慮いただければと思います。

【1日目のご意見等を受けて】
レポートのレイアウトをGoogle DocのTemplateで公開しました。
表紙
2ページ目

別にTemplateじゃなくても。。。という印象ですよね?(笑)
参考にしつつ、独自のレポートを作成してみてください。

【2日目開始】
3ページ目は、今のところ集客系の簡易レポートとしています。
3ページ目もレイアウトを公開しました

さて、たぶん見ていただければ分かってしまうと思いますが、「滞在時間」部分はあとで付け足しました(苦笑)
他のページで入れる部分がなかったからです。
省いていただいて全く問題ありませんので、テンプレートは好きなように煮たり焼いたりしてください。

【流入経路分析】
集客ルート、新規顧客流入率、滞在時間を調べるには、「segment」を使います。

<参考 - 決められたセグメントコード>
gaid::-1 全セッション
gaid::-2 新規ユーザー
gaid::-3 リピーター
gaid::-4 有料の検索トラフィック
gaid::-5 無料の検索トラフィック
gaid::-6 検索トラフィック
gaid::-7 ノーリファラー
gaid::-8 参照トラフィック
gaid::-9 コンバージョンが達成されたセッション
gaid::-10 トランザクションの発生したセッション
gaid::-11 モバイル トラフィック
gaid::-12 直帰以外のセッション

※アドバンスドセグメントを利用している場合は、これ以外にさらに他のセグメントコードが割り振られます。
アドバンスドセグメントのセグメントコード取得はツール開発者のSpreadsheetを利用するのが一番早いと思います。
Analyticsログイン用のアドレス、パスを入れるか、Tokenがわかっていれば、Token欄に直接Tokenを貼りつけてみてください。

1日目で使い方を説明しているので数式の使い方の説明はしません。



1日目に作成したシートを例にとって数式を作ってみると。。。

direct : getGAdata(C1,C2,"visits",B4+1,B5+1,,,"gaid::-7",,)

となります。本当でしょうか?
※ここでは若干数式の後半を省略していますが、気にしないでください。



Analyticsで見てみると、directの数値が89.00ですね。問題ありません。
同様に

検索エンジン経由 : getGAdata(C1,C2,"visits",B4+1,B5+1,,,"gaid::-6",,)
外部サイト経由 : getGAdata(C1,C2,"visits",B4+1,B5+1,,,"gaid::-8",,)

となります。あとは、全体のセッション数から見た比率を求めて円グラフを完成させましょう。
utm経由の流入は「その他」になりますが、その部分は今回含めていません。

【新規顧客流入率】
流入経路分析と同様にsegmentをセットします。

新規 : getGAdata(C1,C2,"visits",B4+1,B5+1,,,"gaid::-2",,)

となります。ここもちゃんとWeb表示データと相違ないか、確認してみましょう。
注) 数式や指標等を覚えてくると、ここでMetricsにある「ga:newVisits」と勘違いすることがありますが、「ga:newVisits」は新規ユニークユーザーの事なので間違えないようにしましょう。

【滞在時間】
このシートに似合わない指標、「滞在時間」です。
ここでは新規顧客とリピーターで滞在時間がどの程度違うかを明示しているだけです。

サクっと計算してしまいましょう。

サイト滞在時間は専用metricsが存在します。「ga:timeOnSite」です。
ただし!計算してみればわかりますが、計算結果は「秒」で返ってきます。

新規の滞在時間 : getGAdata(C1,C2,"timeOnSite",B4+1,B5+1,,,"gaid::-2",,)



出来ましたか?
どんだけ弱小サイトだよ!っていうツッコミは受け付けません(笑) ちなみに、このサイトではありません(笑)

あとは、画面キャプチャどおりに秒を時分秒の形式にしましょう。
ここはExcelの知識でOKです。

やり方は色々ありますが、ここでは簡単にtext関数を利用します。

text(time(0,0,A9/A8),"hh:mm:ss")

関数で取得した秒を一人当たりの秒数に換算します。で、time関数の秒にその値をぶち込んで、text関数で書式を整える。そんな流れです。
ここでも時差の関係かもしれませんが、私の設定ではhhの部分が12と入ってしまうため、「"hh:mm:ss"」の部分を「"00:mm:ss"」としてしまっています。Web画面の数値とイコールになることが確認できれば問題ありません。
なお、小数点のまるめ処理等で若干Webの数値と一致しない場合がありますが、1秒程度のずれとなっているはずです。

2日目は以上で終了です。

【補足(解析の手間をできるだけ省くために)】
自動計算とはいえ、関数がデータを取得するのは時間がかかるため、なるべく計算は少なくしましょう。TOKENや解析期間は1箇所で管理し、Importrange関数で引っ張ってしまう方が良いです。



私の場合は、「表紙」がトリガーになっており、「表紙」で解析期間を選択すると1ページ目以降はすべてImportrangeで期間を取得するため、基本的にはSpreadsheetを開くだけで自動計算され、マーケティングレポートが完成します。

あとは、関数でエラーが出た場合の対処のみを行うという方法です。

【関数でエラーが出た場合の対処方法】
取得するデータ量により、関数でエラーが出る場合があります。その場合は次の方法で回避が可能です。

 ・metricsまたはdimensionsの「ga:」を入れてみる、または抜いてみる。
 ・暫定的に隣のセル等、未使用セルに同じ数式をコピーする。
 ・一旦Spreadsheetを閉じて、時間をおいてからアクセスする。

一つ目の方法を私はよく使います。面倒ですけど、一番簡単で、すぐに再計算可能だからです。Templateを見ていただければ分かると思いますが、Sheet1はレポート用、Sheet2は計算用で、計算結果をSheet1へ引っ張っているので、二つ目の方法をとると、若干厄介ですね。
特に急いでいなければ三つ目の方法でも良いと思います。

エラーを未然に防ぐ方法としては

 ・関数を出来る限り減らす。(1日目でも述べましたが、Google側の制限で一度に10個までしかクエリを受け付けません)
 ・開発者サイトにある通り、スクリプトをいじる。

スクリプトをいじって、改善したという実感がないので、個人的には一つ目の関数を限りなく減らす方法を推奨します。

というわけで、2日目はここで終わりです。
皆さんが作成している解析レポートもぜひ見てみたいと思っています。
では。

【参考】
3ページ目のテンプレート

1日目 << 2日目 >> 3日目

【Google Analytics】Google Spreadsheetで自動集計(レポート作り 1日目)

1日目 >> 2日目

Google Analyticsを利用してサイトの分析をしている企業の方も以外と多いはず。ただ、どんなレポートを作ればいいか分からないという方や、Analyticsのデータをコピーして、Excelに貼りつけなんてやっていると時間がもったいない。とにかく、自動化しましょう。
Analyticsのカスタムレポートという機能をフル活用されている方も多いと思いますが、自分で好きなように、好きな位置に、役立つものだけを配置して、自分で作るからこそ最適なレポートが出来上がると思います。自分自身も、まだ試行錯誤しながら新規に指標を取り入れたり、省いたり、月次集計ページを付け足したりとしていますが、今私が作っているレポートをどんどん公開してしまおうと思います。
まぁ、私が全て勝手に作っているものなので。。
レポートをどういうふうに作ればいいかわからない、または、他の人がどんなものを作っているのか気になるという人は、覗いてみてくださいね。

では、前置きはこの程度にして、始めましょう!

マーケティングレポート作り 1日目
1.表紙を作る
⇒ここは当たり前。どんなレイアウトでもいいです。
社名、「社外秘」、分析期間、分析者など、必要事項をちりばめてしまいましょう。

ちなみに、私は別にデザイナーでもなんでもないので、いたってシンプルです。

どうです。このシンプルさ。
別に隠す必要のない部分まで隠してますけど、とりあえず分析者は今は私だけなので特に書いていなかったりします。

2.2ページ目の作成(PV、セッション等)
ここからが本番です。本格的にPV、セッション等の定量的な数値を取得していきます。


(無理やりデータをけしているのもあって、汚さが増してます。。。)

【下準備】
Google Spreadsheetで自動計算させるための、スクリプトをインストールします。
スプレッドシートを開いたら、「挿入」のメニュー内にある「スクリプト」を選択します。


(画像は英語版になっています。)

表示された画面で「analytics」を検索してください。



この「Google analytics Data Fetch Functions」こそが、自動取得ツールになります。作成者のMikael Thunebergさんのサイトで詳しい使い方も載っています。一応このページを読めば、日本語で作り方がわかるかと思いますよ。

「インストール」を押して、警告画面が出たら「Authorize」を選択してください。


(すみません。キャプチャを撮った時点で、何語か分からない警告画面になってしまいましたw)

【準備】
さて、スクリプトをインストールしたら、魔法の数式が使えるようになります。
利用出来る関数は

・getGAaccountData
・getGAauthenticationToken
・getGAdata

の3つ。
PV、セッション等のデータ取得には、getGAdataだけを利用しますが、その他の関数は準備段階で必要になります。
まずは、getGAdata関数に必要となる数値を取得します。

1つ目はTOKEN。
TOKENは月に1回ほど変わりますので、常に関数を使って最新のTOKENを取得してください。
TOKENの取得方法は、Analyticsに入るためのIDとパスワードが必要です。

数式は

getGAauthenticationToken("ID","Password")

です。


こんな感じです。
B1セルには長ったらしいパスワードが入っていますが、数式にIDとパスワードを入れてあげると、これまた長いTOKENが発行されます。どんだけ長いかは皆さんの目で確かめてみてくださいね。

2つ目に必要なデータとしては、Profile ID。
確認方法は、Google Analyticsのプロファイル一覧画面から、解析したいウェブサイトの一番右「編集」リンクを叩いてください。

そのページの画面上の方に、解析するアドレスが出ており、すぐ下にIDが載っています。


もっと簡単にProfile IDを取得する方法として、作者のページに置いてあるスプレッドシートを利用するという方法があります。(一度自分のアカウントのGoogle Docにコピーする必要があります。)

AnalyticsにログインするためのEmailとPasswordを入れれば、トークンとProfilesを得られます。ちなみに、デフォルトで分析も出来ますので、これを使ってしまうほうが早いのかもしれませんね。

【解析開始】
最初にデータを取得するためのgetGAdataの関数を見てみましょう。

getGAdata(TOKEN,Profile ID, metrics, startDate, endDate, filters, dimensions, segment, sort, includeHeaders, maxRows, startFromRow)

です。
ただし、入力必須なのは
TOKEN、Profile ID、metrics、startDate、endDateです。

では、サイトのPVを取得しましょう!
期間は 2011/5/1 から 2011/5/24まで。

その場合、こんな感じになります。


Profile IDが変わっていますが、ここではどういう風に関数を使うかを理解してください。

ここで入れている数式は

getGAdata(C1,C2,"pageviews",B4+1,B5+1,,,,,)

です。
C1のTOKENと、C2のProfile IDは問題ないでしょう。
次のmetricsはGoogle先生が沢山用意してくれています。これです。ここではmetricsに"pageviews"と記述しましたが本来は"ga:pageviews"となります。
これは、スクリプト側で先頭の「ga:」が欠けていた場合、自動的に補ってくれるからです。
ただし、一気に複数のmetricsを取得することもできるのですが、先頭以外に関してはちゃんと「ga:」を付けなければいけません。

例えば、PVとセッションを両方取得したい場合は
"pageviews,ga:visits" または"ga:pageviews,ga:visits"
となります。
PVはpageviews、セッションはvisitsです。まだ出てきていませんが、ユニークユーザーはvisitorsです。

このあたりは、色々と解析し始めると自然と覚えますし、英語でGogle Analyticsを利用している場合は、書かれている名称そのままなので、利用しやすいと思います。

次に、分析期間について。
なぜ、開始日と終了日にそれぞれ1を足しているのでしょうか?

この部分については不明瞭なのですが、おそらくは時差が関係していると思っています。
早速、検証してみましょう!

試しに先程の数式を以下の数式に書き換えてみてください。

getGAdata(C1,C2,"pageviews",B4+1,B5+1,,"date",,,)



dimensionsの欄に「date」または「ga:date」を入れてみただけです。
そうすると、日付別にPVの数字が現れます。

データの開始日が5月1日になっているのがわかると思います。
あと、Analytics側とも比較してみましょう。



あっていますね。
日本でこのスクリプトを利用する場合は、開始期間と終了期間に、それぞれ1を足す必要があることがわかります。

さて。これがわかれば、あとはレポート作りです。
まず、2ページ目はサイトのPV、セッション、直帰率を出していきましょう。
(参考: Google先生のページ)

PV : getGAdata(TOKEN,Profile ID,"ga:pageviews",startDate+1,endDate+1,,,,,)
セッション : getGAdata(TOKEN,Profile ID,"ga:visits",startDate+1,endDate+1,,,,,)
直帰率 : getGAdata(TOKEN,Profile ID,"ga:visitBounceRate",startDate+1,endDate+1,,,,,)

です。

今まで直帰率は、直接求める指標がなかったので、直帰者数を流入セッション数で割っていたのですが、問い合わせが沢山いったのでしょうか?(苦笑)
サイト分析者なら、求め方も知っていなければ分析を間違えます。
一旦、直帰者数を全体のセッション数で割って求めて確かめてみましょう。

これで、レポートに必要なデータの求め方はわかりました。
では、レポート作りです。

エクセルで少なからずレポートを書かれている方は、結構実感されているところもあると思いますが、自分は、ます目を細かくして、必要なセルは結合して使います。



2ページ目はだいたいこんなレイアウトで作成しています。



ちょうど今作成している会社は複数のウェブサイトを運営しているので、サイトごとに数値を出すイメージです。
一つのサイトの場合は、グラフを充実させるのが良いと思います。

対象期間のセッション数等の求め方はわかったと思います。
30日間の平均は、単純に対象期間を30日間にして、1日あたりの平均を求めたり、対象期間日数分の数値を出したりすれば良いです。
この30日というのも、どう取るかを環が魔性。
例えば、分析期間が5/1から5/6だった場合、その期間を含まず4/1から4/30の30日間をとれば良いのか。という部分です。

前年の数値については、対象期間から365日前を引いたり、直接日付を入れれば終了です。

最後に、Spreadsheetでこのスクリプトを使って自動集計する時の、"運用上の"注意点です。
このスクリプトはGoogle側の制限で一度に10個までしか受け付けられません。そのため、レポートは1ページずつスプレッドシートを分けることを推奨します。作者ページに回避方法が一応載っていますが、私自身、かなり多くの計算をさせているため、最終的に1ページずつ分けて作成することにしました。
PDFは1ページごとに作成して、あとでマージしています。
では、表紙と2ページ目の作成はこれで終了です。質問はコメントいただければ、分かる範囲で3ページ目の作成時の最初にお答えしようかと思います。

3ページ目公開!

【今回作成しているレポートのテンプレート】
表紙
2ページ目
※Google Spreadsheetではグラフや画像を縮小すると印刷時、非常に荒くなります。あくまで社内用で用いるのが良いと思います。

<参考> Google Spreadsheetを利用するには、必ず Importrange関数を覚えましょう。

ImportRange(spreadsheet_key, [sheet!]range)
例) importrange("[key]","Sheet1!E3")
⇒ ここでいう[key]とはアドレスバーに出ている「・・・&key=●●●●&hl・・・」の●の部分です。


見えないと思いますが、黒い部分です。

分析期間やTOKEN等は、1箇所にまとめて、あとはImportrange関数で引っ張ればイイと思います。
ちなみにrangeという名のとおり、1セルだけじゃなくて、複数セルをまとめて引っ張ることが出来ます。

1日目 >> 2日目