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

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

【読了】良いウェブサービスを支える「利用規約」の作り方

良いウェブサービスを支える「利用規約」の作り方

「ウェブサービスという武器を磨くのと同時に、利用規約という防具も常に新しいものにしなければならない」

サービスを展開する上で準備する必要のある「利用規約」。もちろん「利用規約」で免責事項などを記載していたとしても、その規約自体が法律に照らして違法であるならば、面積とならない事は重々承知していたけれども、具体的に何の法令と照らしあわせて違法になるかなど、細かい部分の知識は全くありませんでした。

本書は細かく業種別に適用される可能性のある法律や過去事例、そして権利義務関係だけでなく「利用規約」や「プライバシーポリシー」、「特定商取引法に基づく表示」の雛形の提示と、その雛形の項目1つ1つの説明まであり、固くない内容に噛み砕かれ、しかも薄めの本にもかかわらず内容の充実と即利用、即見直しという実行動に結びつく構成になっている点は本当に脱帽です。

そして、「当社は、ユーザーが本サービスを利用して生じた損害に関し、一切の責任を負いません」という文章は消費者契約法によって無効にされる条項の代表例として紹介されつつも、「利用規約」それ自体はユーザー対応を簡易化する防具でもあるため、雛形のなかにも一部利用されています。

ECを主体として行なっている企業にとっては、「特定商取引法」が表示を求めている11項目や、通信販売における表示事項のルールがとても参考になるでしょう。表示項目のルールは販売価格や送料などの消費者負担金額を全て表示した場合、代金等の支払い時期などの表示を省略できるか、省略することが出来ないのかが表になったものです。

日本の法律が既存のウェブサービスに追いついていないなどと言って法律を破ってしまうと、最悪事業をたたまなければならなくなったりするわけなので、そのためにもちゃんと適用される可能性のある法律に関しては多少の知識があったほうが良いわけですが、本書の雛形には英語版も付いているので、ぜひ内容を把握した上で活用して、新しいサービスを立ちあげていただきたいと思います。

さて、私は自社の規約でも再度見直しましょうかね・・・w

(以下、自分が知らなかったメモ)
・個人情報収集に関する利用目的として「事業活動に用いるため」や「提供するサービスの向上のため」という書き方では利用目的を具体的に特定できていないと判断されないため不可。

・ウェブで海外向けに動産売買を行う場合「ウィーン売買条約」が適用される可能性がある。

・商標権に関しては、他人が商標登録をする前から使用していた場合、常に他人の商標権に対抗できると思いがちだが、一部を除き、後から他人が取得した商標権に対抗することはできない。

・著作者には「著作者人格権」と「著作財産権」という2種類の権利が自動的に付与される。

・サーバにアップされた著作物を利用規約上無制限・無償で利用できるような書き方をしていた場合でも、あくまで「著作者からライセンスしてもらっている」という立場になる。そのため、そのコンテンツを独占的に利用してビジネスを展開することまでは出来ない。
著作権も譲渡してもらうためには「著作権法第27条及び28条に定める権利を含め」て、無償譲渡を宣言することと、さらに「著作者人格権」に配慮し、著作者人格権の不行使条項を入れる必要がある。

・「利用規約」上では例えば、ユーザー情報の保管、管理に責任を負わないと記載していても、営業資料などで「責任を負う」ような記載があった場合は、利用規約の内容が上書かれる可能性がある。