GAS에서 Google 웹로그 분석 데이터 검색
경위
v4 공식 문서 미묘하고 일본어 정보가 적었기 때문에 비망록으로 남겨 둡니다
준비
이런 식으로 설정 시트를 준비한다.
스크립트 편집기를 시작하고 リソース
> Google の拡張サービス
를 엽니다.Analytics Reporting API v4
를 유효하게 한다.
코드
main.gsvar setting = SpreadsheetApp.getActive().getSheetByName('設定');
var viewId = setting.getRange(3, 3).getValue();
var startDate = Utilities.formatDate(setting.getRange(4, 3).getValue(), 'Asia/Tokyo', 'yyyy-MM-dd');
var endDate = Utilities.formatDate(setting.getRange(5, 3).getValue(), 'Asia/Tokyo', 'yyyy-MM-dd');
var filter = setting.getRange(6, 3).getValue();
function doGet() {
getData(displayResults);
}
function getData(displayResults) {
var data = AnalyticsReporting.Reports.batchGet({
reportRequests: [{
viewId: viewId,
dateRanges: [{
startDate: startDate,
endDate: endDate
}],
metrics: [{
expression: 'ga:pageviews',
}],
dimensions: [{name: 'ga:pagePath'}],
filtersExpression: filter,
orderBys: [{
fieldName: 'ga:pagePath',
sortOrder: 'ASCENDING'
}],
samplingLevel: 'LARGE',
// pageToken: '100000',
pageSize: '100000'
}]
});
displayResults(data);
}
function displayResults(response) {
if(!response.code) {
var json = JSON.parse(response);
var data = json.reports[0].data;
Logger.log(json);
// シート追加
var sheetName = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMddHHmmss');
var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);
// ヘッダ
sheet.getRange(1, 1).setValue('ページ');
sheet.getRange(1, 2).setValue('PV');
// データ作成
var dataset = [];
var begin = 2;
var r = begin;
data.rows.forEach(function(row) {
var url = row.dimensions[0].replace(/\?.*$/g, '');
var value = row.metrics[0].values[0];
// 2行目以降かどうか
if(r>begin) {
// 前の行と同じURLの場合は合算する
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, value]);
}
} else {
dataset.push([url, value]);
}
r++;
});
// データ出力
sheet.getRange(begin, 1, dataset.length, 2).setValues(dataset);
} else {
Logger.log('エラーが発生しました', response.message);
}
}
스크립트 할당
설정 시트의 버튼에 스크립트를 할당합니다.
사양
main.gs
var setting = SpreadsheetApp.getActive().getSheetByName('設定');
var viewId = setting.getRange(3, 3).getValue();
var startDate = Utilities.formatDate(setting.getRange(4, 3).getValue(), 'Asia/Tokyo', 'yyyy-MM-dd');
var endDate = Utilities.formatDate(setting.getRange(5, 3).getValue(), 'Asia/Tokyo', 'yyyy-MM-dd');
var filter = setting.getRange(6, 3).getValue();
function doGet() {
getData(displayResults);
}
function getData(displayResults) {
var data = AnalyticsReporting.Reports.batchGet({
reportRequests: [{
viewId: viewId,
dateRanges: [{
startDate: startDate,
endDate: endDate
}],
metrics: [{
expression: 'ga:pageviews',
}],
dimensions: [{name: 'ga:pagePath'}],
filtersExpression: filter,
orderBys: [{
fieldName: 'ga:pagePath',
sortOrder: 'ASCENDING'
}],
samplingLevel: 'LARGE',
// pageToken: '100000',
pageSize: '100000'
}]
});
displayResults(data);
}
function displayResults(response) {
if(!response.code) {
var json = JSON.parse(response);
var data = json.reports[0].data;
Logger.log(json);
// シート追加
var sheetName = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMddHHmmss');
var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);
// ヘッダ
sheet.getRange(1, 1).setValue('ページ');
sheet.getRange(1, 2).setValue('PV');
// データ作成
var dataset = [];
var begin = 2;
var r = begin;
data.rows.forEach(function(row) {
var url = row.dimensions[0].replace(/\?.*$/g, '');
var value = row.metrics[0].values[0];
// 2行目以降かどうか
if(r>begin) {
// 前の行と同じURLの場合は合算する
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, value]);
}
} else {
dataset.push([url, value]);
}
r++;
});
// データ出力
sheet.getRange(begin, 1, dataset.length, 2).setValues(dataset);
} else {
Logger.log('エラーが発生しました', response.message);
}
}
스크립트 할당
설정 시트의 버튼에 스크립트를 할당합니다.
사양
기타
Reporting API v4 에는 페이징 기능이 있어, 그것을 사용하면 10만건 이상도 취득 가능.
이번에는 대상 데이터의 건수가 적기 때문에 구현하지 않았다.
이상
Reference
이 문제에 관하여(GAS에서 Google 웹로그 분석 데이터 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mimizq/items/fdda4b944a9608a2b0a1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)