質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

588閲覧

node.jsでgoogleアナリティクスのPV数を取得する方法

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/11/03 10:48

###前提・実現したいこと
現在node.jsを使用してGoogleアナリティクスよりページ毎のPV数とページパスをjsonファイルにて出力しようと試みています。

将来的にはそのデータを使用して、自動で更新するランキング形式の記事一覧をホームページに設置したいなと考えています。

こちらのサイトを参考にファイル書き出しまでは成功しました。

アクセス数ではなく、PV数を取得したいのでGoogle検索にて調べたところPage Tracking - Dimensions & Metrics Explorer|Google アナリティクス>レポート>Reporting API v4にてディメンションや指標を使って目的のデータを取得するという事まではわかりました。

ですが、このディメンションや指標をどの様に使用すれば良いのかが分からないので、使用方法を知りたいです。

###該当のソースコード

js

1var google = require('googleapis'); 2var analytics = google.analyticsreporting('v4'); 3 4//jsonファイル書き出しの為にfsモジュール呼出 5var fs = require('fs'); 6 7// サービスアカウントキーのJSONファイルを指定 8var credential = require('./***************.json'); 9 10// データを取得したいGoogle AnalyticsのビューIDを指定 11var viewId = '**********'; 12 13// 対象データの期間 14var startDate = "2017-10-27"; 15var endDate = "2017-11-02"; 16 17var jwtClient = new google.auth.JWT(credential.client_email, null, credential.private_key, ["https://www.googleapis.com/auth/analytics.readonly"], null); 18 19jwtClient.authorize((error, tokens) => { 20 if (error){ 21 fs.writeFile('hoge.json', JSON.stringify(error, null, " ")); 22 console.log("flag1:エラーが発生しました") 23 return; 24 } 25 analytics.reports.batchGet({ 26 resource: { 27 "reportRequests": [ 28 { 29 "dateRanges": [ 30 { 31 "startDate": startDate, 32 "endDate": endDate 33 } 34 ], 35 "viewId": viewId, 36 "dimensions": [ 37 { 38 "name": "ga:pagePath" 39 } 40 ] 41 } 42 ] 43 }, 44 auth: jwtClient 45 }, (error, response) => { 46 if (error){ 47 fs.writeFile('hoge.json', JSON.stringify(error, null, " ")); 48 console.log("flag2:エラーが発生しました") 49 } 50 fs.writeFile('hoge.json', JSON.stringify(response, null, " ")); 51 console.log("ファイルが正常に書き出しされました") 52 }) 53});

###試したことその1

js

1var pv = 0;//1行目に追加 2 3"name": "ga:pagePath", 4"pv": "ga:pageviews"//上記コード「"name": "ga:pagePath"」の下に追加

<エラー内容>
jsonファイルに書き出された内容
"message": "Invalid JSON payload received. Unknown name "pv" at 'report_requests[0].dimensions[0]': Cannot find field.",
"domain": "global",
"reason": "badRequest"

コンソールに表示された内容
C:******************>node get-ga.js
flag2:エラーが発生しました
ファイルが正常に書き出しされました
(node:1612) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.
(node:1612) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.

###試したことその2
「pv」というのが何なのか分からないよって言われてるのは何となくわかったのですが、「"name": "ga:pagePath"」の「"name"」は何故使えるの?と疑問が湧きました。
それが解決出来れば、問題が解決できるかもしれないと思い下記の検索ワードの組み合わせにて検索しました。

node.js, google analytics, googleapi, name, ga:pageviews, json, 形式, フォーマット

結果、解決出来ず検索ワードが思いつかなくなってしまいました。


つきましては、コードに対してのご指摘や検索ワード候補、参考になりそうなサイト等何かヒントを頂ければと思います。

また、前回質問の仕方についてアドバイスを頂き改善してみたのですが、まだまだ至らないところもあるかと思います。
質問の仕方についてもお気づきの点が御座いましたらアドバイスを頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

js

1 "name": "ga:pagePath"//この行の下に下記のコードを追加 2 } 3 ], 4 "metrics": [ 5 { 6 "expression":"ga:pageviews" 7 } 8 ]

以下のページを参考にこの修正で取得出来ました。
サンプル|Google アナリティクス>レポート>Reporting API v4

ですが、サンプルの一致する部分を引用してみただけに過ぎず「"expression":"ga:pageviews"」の「"expression"」部分がなぜそれになっているのかが分かりません。
どこかに一覧のようなものがあるのかと思いますので、ご存知の方がいればご教授願います。

投稿2017/11/03 12:35

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問