Google Apps ScriptでAnalyticsデータをスプレッドシート上に展開する方法
2020/12/12
以前、PythonでAnalyticsデータを取得する方法について書きましたが、Google Apps Scriptでスプレッドシート上に展開する方法もあります。取得後のデータの取扱いを考えるとスプレッドシート上に書き込んだ方が良いのかもしれません。今回はその方法について紹介します。
完成イメージ
完成イメージは以下のとおりです。実行すると過去30日分のデータ(URL, タイトル, PV)をスプレッドシート上に書き込んでくれます。PVの降順で展開させています。
スクリプトエディタ上でAnalyticsAPIの有効化
まずはAnalyticsAPIの有効化が必要です。スクリプトエディタのメニューから「リソース」−「Googleの拡張サービス」を選びます。
リストの中から「Analytics Reporting API」を探し有効化します。これでAPIの有効化はOKです。Pythonのような外部からのアクセスに比べ超簡単ですね。
ソースコード
ソースコードは以下のとおりです。2行目にVIEW IDを入力してください。実行すると上で紹介したようにスプレッドシートに過去30日のPVが現れます。
GitHubにもアップしました。
function getAnalyticsData() { var viewId = "ga:" + "11*****63"; //VIEW_ID var sheet = SpreadsheetApp.getActive().getSheetByName('data'); dt = new Date(); var endDate = Utilities.formatDate(dt, 'Asia/Tokyo', 'yyyy-MM-dd'); dt.setDate(dt.getDate()-30); var startDate = Utilities.formatDate(dt, 'Asia/Tokyo', 'yyyy-MM-dd'); var response = AnalyticsReporting.Reports.batchGet({ reportRequests: [{ viewId: viewId, dateRanges: [{ startDate: startDate, endDate: endDate }], metrics: [{ expression: 'ga:pageviews', }], dimensions: [{'name': 'ga:pagePath'}, {'name': 'ga:pageTitle'}], orderBys: [{ fieldName: 'ga:pageviews', //fieldName: 'ga:pagePath', sortOrder: 'DESCENDING' }], samplingLevel: 'LARGE', pageSize: '100000' }] }); var json = JSON.parse(response); var data = json.reports[0].data; var dataset = []; var r = 2; data.rows.forEach(function(row) { var url = row.dimensions[0].replace(/\?.*$/g, ''); var title = row.dimensions[1].replace(/\?.*$/g, ''); var value = row.metrics[0].values[0]; if(r>2) { var prevRow = dataset[dataset.length-1]; var regUrl = url.replace(/\?.*$/g, ''); var prevUrl = prevRow[0]; if(prevUrl === regUrl) { r--; prevRow[1] = Number(prevRow[1]) + Number(value); } else { dataset.push([url, title, value]); } } else { dataset.push([url, title, value]); } r++; }); sheet.getRange(2, 1, dataset.length, 3).setValues(dataset); }
スポンサーリンク