Google Apps ScriptでAnalyticsデータをスプレッドシート上に展開する方法
2025/08/11
以前、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);
}
スポンサーリンク


