google_api 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +6 -0
- data/README.md +96 -85
- data/lib/google_api/ga/data.rb +43 -4
- data/lib/google_api/version.rb +1 -1
- metadata +1 -1
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## v1.0.3
|
2
|
+
|
3
|
+
* GoogleApi::Ga::Data has now silent error, GoogleApi::Ga::Data.error(true) - raise error, GoogleApi::Ga::Data.error(false) - not error (default)
|
4
|
+
* add GoogleApi::Ga::Data.use_cache
|
5
|
+
* add GoogleApi::Ga::Data.clear_cache
|
6
|
+
|
1
7
|
## v1.0.2
|
2
8
|
|
3
9
|
* ids is convert to integer
|
data/README.md
CHANGED
@@ -239,22 +239,73 @@ First you can play on the playground: http://ga-dev-tools.appspot.com/explorer/.
|
|
239
239
|
```ruby
|
240
240
|
GoogleApi::Ga::Data
|
241
241
|
```
|
242
|
+
|
242
243
|
<br>
|
244
|
+
|
245
|
+
<table>
|
246
|
+
<thead>
|
247
|
+
<tr>
|
248
|
+
<th>method name</th>
|
249
|
+
<th>alias</th>
|
250
|
+
</tr>
|
251
|
+
</thead>
|
252
|
+
|
253
|
+
<tbody>
|
254
|
+
<tr>
|
255
|
+
<td>ids</td>
|
256
|
+
<td>id</td>
|
257
|
+
</tr>
|
258
|
+
<tr>
|
259
|
+
<td>start_date</td>
|
260
|
+
<td>from</td>
|
261
|
+
</tr>
|
262
|
+
<tr>
|
263
|
+
<td>end_date</td>
|
264
|
+
<td>to</td>
|
265
|
+
</tr>
|
266
|
+
<tr>
|
267
|
+
<td>metrics</td>
|
268
|
+
<td>select</td>
|
269
|
+
</tr>
|
270
|
+
<tr>
|
271
|
+
<td>dimensions</td>
|
272
|
+
<td>with</td>
|
273
|
+
</tr>
|
274
|
+
<tr>
|
275
|
+
<td>sort</td>
|
276
|
+
<td></td>
|
277
|
+
</tr>
|
278
|
+
<tr>
|
279
|
+
<td>filters</td>
|
280
|
+
<td>where</td>
|
281
|
+
</tr>
|
282
|
+
<tr>
|
283
|
+
<td>segment</td>
|
284
|
+
<td></td>
|
285
|
+
</tr>
|
286
|
+
<tr>
|
287
|
+
<td>start_index</td>
|
288
|
+
<td>offset</td>
|
289
|
+
</tr>
|
290
|
+
<tr>
|
291
|
+
<td>max_results</td>
|
292
|
+
<td>offset</td>
|
293
|
+
</tr>
|
294
|
+
</tbody>
|
295
|
+
</table>
|
296
|
+
|
297
|
+
|
243
298
|
> ## ids
|
244
299
|
>
|
245
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#ids" target="_blank"
|
246
|
-
>
|
247
|
-
> **alias:** id
|
300
|
+
> **doc:** <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#ids" target="_blank">doc</a>
|
248
301
|
>
|
249
302
|
> Id of profile, by default is use id from GoogleApi::Ga.id.
|
250
303
|
|
251
304
|
<br>
|
252
305
|
|
253
|
-
> ## start_date
|
254
|
-
>
|
255
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startDate" target="_blank" style="float:right">doc</a>
|
306
|
+
> ## start_date, end_date
|
256
307
|
>
|
257
|
-
> **
|
308
|
+
> **doc:** <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startDate" target="_blank">start-date</a>, <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startDate" target="_blank">end-date</a>
|
258
309
|
>
|
259
310
|
> **default:** _Date.today_<br>
|
260
311
|
> **parameters:**<br>
|
@@ -263,59 +314,19 @@ GoogleApi::Ga::Data
|
|
263
314
|
|
264
315
|
<br>
|
265
316
|
|
266
|
-
> ##
|
267
|
-
>
|
268
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startDate" target="_blank" style="float:right">doc</a>
|
317
|
+
> ## metrics, dimensions, sort
|
269
318
|
>
|
270
|
-
> **
|
271
|
-
>
|
272
|
-
> **default:** _Date.today_<br>
|
273
|
-
> **parameters:**<br>
|
274
|
-
> _String_ in YYYY-MM-DD or _Date_ or _DateTime_ or _Time_<br>
|
275
|
-
> _Integer_ for add or sub days from _Date.today_
|
276
|
-
|
277
|
-
<br>
|
278
|
-
|
279
|
-
> ## metrics
|
319
|
+
> **doc:** <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#metrics" target="_blank">metrics</a>, <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#dimensions" target="_blank">dimensions</a>, <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#sort" target="_blank">sort</a>
|
280
320
|
>
|
281
|
-
>
|
282
|
-
>
|
283
|
-
> required parameters
|
284
|
-
>
|
285
|
-
> **alias:** select
|
286
|
-
>
|
287
|
-
> you can also add or sub parameters with `.metrics_add` or `.metrics_sub`
|
288
|
-
>
|
289
|
-
> **parameters:** Array with String or Symbol, String (not compiled, <i>"ga:visitors"</i>) or Symbol (compiled, <i>:visitors</i>)
|
290
|
-
|
291
|
-
<br>
|
292
|
-
|
293
|
-
> ## dimensions
|
294
|
-
>
|
295
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#dimensions" target="_blank" style="float:right">doc</a>
|
296
|
-
>
|
297
|
-
> **alias:** with
|
298
|
-
>
|
299
|
-
> you can also add or sub parameters with `.dimensions_add` or `.dimensions_sub`
|
321
|
+
> you can also add or sub parameters with `.method_add` or `.method_sub`
|
300
322
|
>
|
301
323
|
> **parameters:** Array with String or Symbol, String (not compiled, <i>"ga:visitors"</i>) or Symbol (compiled, <i>:visitors</i>)
|
302
324
|
|
303
325
|
<br>
|
304
326
|
|
305
|
-
> ##
|
327
|
+
> ## filters, segment
|
306
328
|
>
|
307
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#
|
308
|
-
> you can also add or sub parameters with `.sort_add` or `.sort_sub`
|
309
|
-
>
|
310
|
-
> **parameters:** Array with String or Symbol, String (not compiled, <i>"ga:visitors"</i>) or Symbol (compiled, <i>:visitors</i>)
|
311
|
-
|
312
|
-
<br>
|
313
|
-
|
314
|
-
> ## filters
|
315
|
-
>
|
316
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters" target="_blank" style="float:right">doc</a>
|
317
|
-
>
|
318
|
-
> **alias:** where
|
329
|
+
> **doc:** <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters" target="_blank">filters</a>, <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#segment" target="_blank">segment</a>
|
319
330
|
>
|
320
331
|
> **parameters:**<br>
|
321
332
|
> {(attribute operator value) & (attribute operator value) | (attribute operator value)} or String (not compiled)
|
@@ -326,25 +337,9 @@ GoogleApi::Ga::Data
|
|
326
337
|
|
327
338
|
<br>
|
328
339
|
|
329
|
-
> ## segment
|
330
|
-
>
|
331
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#segment" target="_blank" style="float:right">doc</a>
|
332
|
-
>
|
333
|
-
> **parameters:**<br>
|
334
|
-
> {(attribute operator value) & (attribute operator value) | (attribute operator value)} or String (not compiled) <br>
|
335
|
-
> with {} automaticly add "dynamic::"
|
336
|
-
>
|
337
|
-
> **operators:** ==, !=, >, <, >=, <=, =~, !~<br>
|
338
|
-
> % _is =@_<br>
|
339
|
-
> ** _is !@_
|
340
|
-
|
341
|
-
<br>
|
342
|
-
|
343
340
|
> ## start_index
|
344
341
|
>
|
345
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startIndex" target="_blank"
|
346
|
-
>
|
347
|
-
> **alias:** offset
|
342
|
+
> **doc:** <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startIndex" target="_blank">start-index</a>
|
348
343
|
>
|
349
344
|
> **parameters:** Integer from 1.
|
350
345
|
|
@@ -352,33 +347,49 @@ GoogleApi::Ga::Data
|
|
352
347
|
|
353
348
|
> ## max_results
|
354
349
|
>
|
355
|
-
> <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#maxResults" target="_blank"
|
356
|
-
>
|
357
|
-
> **alias:** limit
|
350
|
+
> **doc:** <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/reference#maxResults" target="_blank">max-results</a>
|
358
351
|
>
|
359
352
|
> **parameters:** Integer from 1 to 10 000.
|
360
353
|
|
361
|
-
<br><br><br>
|
362
354
|
|
363
|
-
|
364
|
-
>
|
365
|
-
> For how long in minutes will be data cached. Use 0 for never expire.
|
355
|
+
### Cache
|
366
356
|
|
367
|
-
|
357
|
+
For how long in minutes will be data cached. Use 0 for never expire.
|
358
|
+
```ruby
|
359
|
+
GoogleApi::Ga::Data.cache(minutes)
|
368
360
|
|
369
|
-
|
370
|
-
|
371
|
-
|
361
|
+
# you can also clear cache
|
362
|
+
GoogleApi::Ga::Data.clear_cache
|
363
|
+
|
364
|
+
# if you want clear cache and cache new
|
365
|
+
GoogleApi::Ga::Data.select(:visits).clear_cache.cache(60)
|
366
|
+
|
367
|
+
# orif you don't want use cache at all, default: true
|
368
|
+
GoogleApi::Ga::Data.use_cache(false)
|
369
|
+
```
|
370
|
+
|
371
|
+
### Error
|
372
|
+
|
373
|
+
What happen if parameters are wrong.
|
374
|
+
```ruby
|
375
|
+
# raise error with message
|
376
|
+
GoogleApi::Ga::Data.error(true)
|
377
|
+
|
378
|
+
# default, not raise error, just empty result
|
379
|
+
GoogleApi::Ga::Data.error(false)
|
380
|
+
```
|
372
381
|
|
373
382
|
### Fetch data
|
374
383
|
|
375
384
|
You can use one of these. Data is stored in the class.
|
376
385
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
386
|
+
```
|
387
|
+
.all # [header, rows]
|
388
|
+
.rows # rows returned by google analytics
|
389
|
+
.header # header of data, (["ga:day", "ga:month", "ga:visitis"])
|
390
|
+
.count # number of rows
|
391
|
+
.each # each as you expected, (`|data|` or `|index, data|`)
|
392
|
+
```
|
382
393
|
|
383
394
|
### Clear stored data and fetch again
|
384
395
|
|
data/lib/google_api/ga/data.rb
CHANGED
@@ -8,6 +8,8 @@ module GoogleApi
|
|
8
8
|
@metrics, @dimensions, @sort = [], [], []
|
9
9
|
@filters, @segment = nil, nil
|
10
10
|
@start_index, @max_results = nil, nil
|
11
|
+
@error = false
|
12
|
+
@use_cache = true
|
11
13
|
end
|
12
14
|
|
13
15
|
# Auto initialize data
|
@@ -235,6 +237,39 @@ module GoogleApi
|
|
235
237
|
end
|
236
238
|
end
|
237
239
|
|
240
|
+
# -----------------------------------------------------------------------------------
|
241
|
+
# Type 5
|
242
|
+
#
|
243
|
+
# Error, use cache
|
244
|
+
#
|
245
|
+
TYPE_5 = { error: nil,
|
246
|
+
use_cache: nil }
|
247
|
+
TYPE_5.each do |key, value|
|
248
|
+
eval <<-METHOD
|
249
|
+
def #{key}(value = nil)
|
250
|
+
if value.nil?
|
251
|
+
return @#{key}
|
252
|
+
end
|
253
|
+
|
254
|
+
if !value.is_a?(TrueClass) && !value.is_a?(FalseClass)
|
255
|
+
raise GoogleApi::TypeError, "Value must be true of false"
|
256
|
+
end
|
257
|
+
|
258
|
+
self.#{key} = value
|
259
|
+
self
|
260
|
+
end
|
261
|
+
|
262
|
+
def #{key}=(value)
|
263
|
+
@#{key} = value
|
264
|
+
end
|
265
|
+
METHOD
|
266
|
+
end
|
267
|
+
|
268
|
+
def clear_cache
|
269
|
+
_cache.delete(parameters)
|
270
|
+
self
|
271
|
+
end
|
272
|
+
|
238
273
|
# Add row!, header!, all!, count!. First clear and run method .
|
239
274
|
[:rows, :header, :all, :count].each do |value|
|
240
275
|
eval <<-METHOD
|
@@ -283,7 +318,7 @@ module GoogleApi
|
|
283
318
|
private
|
284
319
|
|
285
320
|
def data
|
286
|
-
@data ||= get
|
321
|
+
@data ||= get
|
287
322
|
end
|
288
323
|
|
289
324
|
def parameters
|
@@ -322,18 +357,22 @@ module GoogleApi
|
|
322
357
|
end
|
323
358
|
|
324
359
|
def get
|
325
|
-
if @
|
360
|
+
if @use_cache && _cache.exists?(parameters)
|
326
361
|
return _cache.read(parameters)
|
327
362
|
end
|
328
363
|
|
329
364
|
result = _session.client.execute( api_method: _session.api.data.ga.get,
|
330
365
|
parameters: parameters )
|
331
366
|
|
332
|
-
if result.error?
|
367
|
+
if @error && result.error?
|
333
368
|
raise GoogleApi::GaError, result.error_message
|
334
369
|
end
|
335
370
|
|
336
|
-
|
371
|
+
result = result.data
|
372
|
+
|
373
|
+
if @use_cache && !@cache.nil?
|
374
|
+
_cache.write(parameters, result, @cache)
|
375
|
+
end
|
337
376
|
|
338
377
|
result
|
339
378
|
end
|
data/lib/google_api/version.rb
CHANGED