diff --git a/build/ga-api-utils.js b/build/ga-api-utils.js index e59017c..9bb52ed 100644 --- a/build/ga-api-utils.js +++ b/build/ga-api-utils.js @@ -1 +1 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.gaApiUtils=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1){throw new Error("get() only accepts an object with a single "+'property: either "accountId", "webPropertyId", "propertyId", '+'"profileId" or "viewId"')}return this.getProfile(obj.profileId||obj.viewId)||this.getWebProperty(obj.webPropertyId||obj.propertyId)||this.getAccount(obj.accountId)};AccountSummaries.prototype.getAccount=function(accountId){return this.accountsById_[accountId]&&this.accountsById_[accountId].self};AccountSummaries.prototype.getWebProperty=function(webPropertyId){return this.webPropertiesById_[webPropertyId]&&this.webPropertiesById_[webPropertyId].self};alias(AccountSummaries.prototype,"getWebProperty","getProperty");AccountSummaries.prototype.getProfile=function(profileId){return this.profilesById_[profileId]&&this.profilesById_[profileId].self};alias(AccountSummaries.prototype,"getProfile","getView");AccountSummaries.prototype.getAccountByProfileId=function(profileId){return this.profilesById_[profileId]&&this.profilesById_[profileId].grandParent};alias(AccountSummaries.prototype,"getAccountByProfileId","getAccountByViewId");AccountSummaries.prototype.getWebPropertyByProfileId=function(profileId){return this.profilesById_[profileId]&&this.profilesById_[profileId].parent};alias(AccountSummaries.prototype,"getWebPropertyByProfileId","getPropertyByViewId");AccountSummaries.prototype.getAccountByWebPropertyId=function(webPropertyId){return this.webPropertiesById_[webPropertyId]&&this.webPropertiesById_[webPropertyId].parent};alias(AccountSummaries.prototype,"getAccountByWebPropertyId","getAccountByPropertyId");function alias(object,referenceProp,aliasName){if(Object.defineProperty&&!Object.hasOwnProperty.call(object,aliasName)){Object.defineProperty(object,aliasName,{get:function(){return object[referenceProp]}})}else{object[aliasName]=object[referenceProp]}}function accountHasAtLeastOneView(account){if(account.webProperties&&account.webProperties.length){for(var i=0,webProperty;webProperty=account.webProperties[i];i++){if(propertyHasAtLeastOneView(webProperty))return true}}return false}function propertyHasAtLeastOneView(property){return!!(property.profiles&&property.profiles.length)}module.exports=AccountSummaries},{}],2:[function(require,module,exports){var AccountSummaries=require("./account-summaries");var API_PATH="/analytics/v3/management/accountSummaries";var cache;function requestAccountSummaries(){var promise=gapi.client.request({path:API_PATH}).then(function(resp){return resp});return new promise.constructor(function(resolve,reject){var accounts=[];promise.then(function fn(resp){var result=resp.result;if(result.items){accounts=accounts.concat(result.items)}if(result.startIndex+result.itemsPerPage<=result.totalResults){gapi.client.request({path:API_PATH,params:{"start-index":result.startIndex+result.itemsPerPage}}).then(fn)}else{resolve(accounts)}}).then(null,reject)})}module.exports={get:function(opts){if(opts&&opts.noCache){cache=null;delete opts.noCache}if(!cache){cache=requestAccountSummaries()}return cache.then(function(accounts){return new AccountSummaries(accounts,opts)})}}},{"./account-summaries":1}],3:[function(require,module,exports){var Metadata=require("./metadata");var cache={};function clone(obj){return JSON.parse(JSON.stringify(obj))}function requestColumns(){var key="columns";if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/metadata/ga/columns",params:{reportType:"ga"}})}function requestCustomMetrics(accountId,propertyId){var key="customMetrics:"+accountId+":"+propertyId;if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/management/accounts/"+accountId+"/webproperties/"+propertyId+"/customMetrics"})}function requestCustomDimensions(accountId,propertyId){var key="customDimensions:"+accountId+":"+propertyId;if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/management/accounts/"+accountId+"/webproperties/"+propertyId+"/customDimensions"})}function requestGoals(accountId,propertyId,viewId){var key="goals:"+accountId+":"+propertyId+":"+viewId;if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/management/accounts/"+accountId+"/webproperties/"+propertyId+"/profiles/"+viewId+"/goals"})}function applyTransforms(columns,transforms){var newColumns=[];columns.forEach(function(column){if(!transforms.some(function(transform){return transform(column,newColumns)}))newColumns.push(column)});return newColumns}function transformCustomMetrics(customMetrics){return function(column,newColumns){if(column.id=="ga:metricXX"){customMetrics.forEach(function(customMetric,i){var newColumn=clone(column);newColumn.id=customMetric.id;newColumn.attributes.uiName=customMetric.name+" (Custom Metric "+(i+1)+")";newColumns.push(newColumn)});return true}}}function transformCustomDimensions(customDimensions){return function(column,newColumns){if(column.id=="ga:dimensionXX"){customDimensions.forEach(function(customDimension,i){var newColumn=clone(column);newColumn.id=customDimension.id;newColumn.attributes.uiName=customDimension.name+" (Custom Dimension "+(i+1)+")";newColumns.push(newColumn)});return true}}}function transformGoals(goals){return function(column,newColumns){if(column.attributes.minTemplateIndex&&/goal/i.test(column.id)){goals.forEach(function(goal){var newColumn=clone(column);newColumn.id=column.id.replace("XX",goal.id);newColumn.attributes.uiName=goal.name+" ("+column.attributes.uiName.replace("XX",goal.id)+")";newColumns.push(newColumn)});return true}}}function transformTemplates(isPremium){return function(column,newColumns){if(column.attributes.minTemplateIndex){if(isPremium&&column.attributes.premiumMinTemplateIndex){var min=+column.attributes.premiumMinTemplateIndex;var max=+column.attributes.premiumMaxTemplateIndex}else{var min=+column.attributes.minTemplateIndex;var max=+column.attributes.maxTemplateIndex}for(var i=min;i<=max;i++){var newColumn=clone(column);newColumn.id=column.id.replace("XX",i);newColumn.attributes.uiName=column.attributes.uiName.replace("XX",i);newColumns.push(newColumn)}return true}}}module.exports={get:function(){return Promise.resolve(requestColumns()).then(function(resp){return new Metadata(resp.result.items)})},getAuthenticated:function(account,property,view){return Promise.all([requestColumns(),requestCustomMetrics(account.id,property.id),requestCustomDimensions(account.id,property.id),requestGoals(account.id,property.id,view.id)]).then(function(responses){return applyTransforms(responses[0].result.items,[transformCustomMetrics(responses[1].result.items),transformCustomDimensions(responses[2].result.items),transformGoals(responses[3].result.items),transformTemplates(property.level=="PREMIUM")])}).then(function(columns){return new Metadata(columns)})},clearCache:function(){cache={}}}},{"./metadata":4}],4:[function(require,module,exports){function Metadata(columns){this._columns=columns;this._metrics=[];this._dimensions=[];this._ids={};this._columns.forEach(function(column){this._ids[column.id]=column.attributes;if(column.attributes.type=="METRIC"){this._metrics.push(column)}else if(column.attributes.type=="DIMENSION"){this._dimensions.push(column)}}.bind(this))}Metadata.prototype.all=function(filter){return filter?applyFilter(this._columns,filter):this._columns};Metadata.prototype.allMetrics=function(filter){return filter?applyFilter(this._metrics,filter):this._metrics};Metadata.prototype.allDimensions=function(filter){return filter?applyFilter(this._dimensions,filter):this._dimensions};Metadata.prototype.get=function(id){return this._ids[id]};function applyFilter(columns,filter){return columns.filter(function(column){if(typeof filter=="function"){return filter(column.attributes,column.id)}else{return Object.keys(filter).every(function(key){return filter[key]===column.attributes[key]})}})}module.exports=Metadata},{}],5:[function(require,module,exports){module.exports={accountSummaries:require("./account-summaries"),metadata:require("./metadata")}},{"./account-summaries":2,"./metadata":3}]},{},[5])(5)}); \ No newline at end of file +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.gaApiUtils=f()}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i1){throw new Error("get() only accepts an object with a single "+'property: either "accountId", "webPropertyId", "propertyId", '+'"profileId" or "viewId"')}return this.getProfile(obj.profileId||obj.viewId)||this.getWebProperty(obj.webPropertyId||obj.propertyId)||this.getAccount(obj.accountId)};AccountSummaries.prototype.getAccount=function(accountId){return this.accountsById_[accountId]&&this.accountsById_[accountId].self};AccountSummaries.prototype.getWebProperty=function(webPropertyId){return this.webPropertiesById_[webPropertyId]&&this.webPropertiesById_[webPropertyId].self};alias(AccountSummaries.prototype,"getWebProperty","getProperty");AccountSummaries.prototype.getProfile=function(profileId){return this.profilesById_[profileId]&&this.profilesById_[profileId].self};alias(AccountSummaries.prototype,"getProfile","getView");AccountSummaries.prototype.getAccountByProfileId=function(profileId){return this.profilesById_[profileId]&&this.profilesById_[profileId].grandParent};alias(AccountSummaries.prototype,"getAccountByProfileId","getAccountByViewId");AccountSummaries.prototype.getWebPropertyByProfileId=function(profileId){return this.profilesById_[profileId]&&this.profilesById_[profileId].parent};alias(AccountSummaries.prototype,"getWebPropertyByProfileId","getPropertyByViewId");AccountSummaries.prototype.getAccountByWebPropertyId=function(webPropertyId){return this.webPropertiesById_[webPropertyId]&&this.webPropertiesById_[webPropertyId].parent};alias(AccountSummaries.prototype,"getAccountByWebPropertyId","getAccountByPropertyId");function alias(object,referenceProp,aliasName){if(Object.defineProperty&&!Object.hasOwnProperty.call(object,aliasName)){Object.defineProperty(object,aliasName,{get:function(){return object[referenceProp]}})}else{object[aliasName]=object[referenceProp]}}function accountHasAtLeastOneView(account){if(account.webProperties&&account.webProperties.length){for(var i=0,webProperty;webProperty=account.webProperties[i];i++){if(propertyHasAtLeastOneView(webProperty))return true}}return false}function propertyHasAtLeastOneView(property){return!!(property.profiles&&property.profiles.length)}module.exports=AccountSummaries},{}],2:[function(require,module,exports){var AccountSummaries=require("./account-summaries");var API_PATH="/analytics/v3/management/accountSummaries";var cache;function requestAccountSummaries(){var promise=gapi.client.request({path:API_PATH}).then(function(resp){return resp});return new promise.constructor(function(resolve,reject){var accounts=[];promise.then(function fn(resp){var result=resp.result;if(result.items){accounts=accounts.concat(result.items)}if(result.startIndex+result.itemsPerPage<=result.totalResults){gapi.client.request({path:API_PATH,params:{"start-index":result.startIndex+result.itemsPerPage}}).then(fn)}else{resolve(accounts)}}).then(null,reject)})}module.exports={get:function(opts){if(opts&&opts.noCache){cache=null;delete opts.noCache}if(!cache){cache=requestAccountSummaries()}return cache.then(function(accounts){return new AccountSummaries(accounts,opts)})}}},{"./account-summaries":1}],3:[function(require,module,exports){var Metadata=require("./metadata");var cache={};function clone(obj){return JSON.parse(JSON.stringify(obj))}function requestColumns(){var key="columns";if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/metadata/ga/columns"})}function requestCustomMetrics(accountId,propertyId){var key="customMetrics:"+accountId+":"+propertyId;if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/management/accounts/"+accountId+"/webproperties/"+propertyId+"/customMetrics"})}function requestCustomDimensions(accountId,propertyId){var key="customDimensions:"+accountId+":"+propertyId;if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/management/accounts/"+accountId+"/webproperties/"+propertyId+"/customDimensions"})}function requestGoals(accountId,propertyId,viewId){var key="goals:"+accountId+":"+propertyId+":"+viewId;if(cache[key])return cache[key];return cache[key]=gapi.client.request({path:"/analytics/v3/management/accounts/"+accountId+"/webproperties/"+propertyId+"/profiles/"+viewId+"/goals"})}function applyTransforms(columns,transforms){var newColumns=[];columns.forEach(function(column){if(!transforms.some(function(transform){return transform(column,newColumns)}))newColumns.push(column)});return newColumns}function transformCustomMetrics(customMetrics){return function(column,newColumns){if(column.id=="ga:metricXX"){customMetrics.forEach(function(customMetric,i){var newColumn=clone(column);newColumn.id=customMetric.id;newColumn.attributes.uiName=customMetric.name+" (Custom Metric "+(i+1)+")";newColumns.push(newColumn)});return true}}}function transformCustomDimensions(customDimensions){return function(column,newColumns){if(column.id=="ga:dimensionXX"){customDimensions.forEach(function(customDimension,i){var newColumn=clone(column);newColumn.id=customDimension.id;newColumn.attributes.uiName=customDimension.name+" (Custom Dimension "+(i+1)+")";newColumns.push(newColumn)});return true}}}function transformGoals(goals){return function(column,newColumns){if(column.attributes.minTemplateIndex&&/goal/i.test(column.id)){goals.forEach(function(goal){var newColumn=clone(column);newColumn.id=column.id.replace("XX",goal.id);newColumn.attributes.uiName=goal.name+" ("+column.attributes.uiName.replace("XX",goal.id)+")";newColumns.push(newColumn)});return true}}}function transformTemplates(isPremium){return function(column,newColumns){if(column.attributes.minTemplateIndex){if(isPremium&&column.attributes.premiumMinTemplateIndex){var min=+column.attributes.premiumMinTemplateIndex;var max=+column.attributes.premiumMaxTemplateIndex}else{var min=+column.attributes.minTemplateIndex;var max=+column.attributes.maxTemplateIndex}for(var i=min;i<=max;i++){var newColumn=clone(column);newColumn.id=column.id.replace("XX",i);newColumn.attributes.uiName=column.attributes.uiName.replace("XX",i);newColumns.push(newColumn)}return true}}}module.exports={get:function(){return Promise.resolve(requestColumns()).then(function(resp){return new Metadata(resp.result.items)})},getAuthenticated:function(account,property,view){return Promise.all([requestColumns(),requestCustomMetrics(account.id,property.id),requestCustomDimensions(account.id,property.id),requestGoals(account.id,property.id,view.id)]).then(function(responses){return applyTransforms(responses[0].result.items,[transformCustomMetrics(responses[1].result.items),transformCustomDimensions(responses[2].result.items),transformGoals(responses[3].result.items),transformTemplates(property.level=="PREMIUM")])}).then(function(columns){return new Metadata(columns)})},clearCache:function(){cache={}}}},{"./metadata":4}],4:[function(require,module,exports){function Metadata(columns){this._columns=columns;this._metrics=[];this._dimensions=[];this._ids={};this._columns.forEach(function(column){this._ids[column.id]=column.attributes;if(column.attributes.type=="METRIC"){this._metrics.push(column)}else if(column.attributes.type=="DIMENSION"){this._dimensions.push(column)}}.bind(this))}Metadata.prototype.all=function(filter){return filter?applyFilter(this._columns,filter):this._columns};Metadata.prototype.allMetrics=function(filter){return filter?applyFilter(this._metrics,filter):this._metrics};Metadata.prototype.allDimensions=function(filter){return filter?applyFilter(this._dimensions,filter):this._dimensions};Metadata.prototype.get=function(id){return this._ids[id]};function applyFilter(columns,filter){return columns.filter(function(column){if(typeof filter=="function"){return filter(column.attributes,column.id)}else{return Object.keys(filter).every(function(key){return filter[key]===column.attributes[key]})}})}module.exports=Metadata},{}],5:[function(require,module,exports){module.exports={accountSummaries:require("./account-summaries"),metadata:require("./metadata")}},{"./account-summaries":2,"./metadata":3}]},{},[5])(5)}); \ No newline at end of file diff --git a/lib/metadata/index.js b/lib/metadata/index.js index a76d2d0..9655f49 100644 --- a/lib/metadata/index.js +++ b/lib/metadata/index.js @@ -46,8 +46,7 @@ function requestColumns() { if (cache[key]) return cache[key]; return cache[key] = gapi.client.request({ - path: '/analytics/v3/metadata/ga/columns', - params: {reportType: 'ga'} + path: '/analytics/v3/metadata/ga/columns' }); }