---
title: Google Analytics
description: Toob GA4 aruanded, liiklusandmed ja järeldused Google Analyticsi API-st.
category: Marketing
sublabel: SEO
author: OpenClaudia
tags: 
license: MIT
source: https://github.com/OpenClaudia/openclaudia-skills
---

# Google Analytics (GA4)

Tõmba GA4-st aruanded ja ülevaated Google Analyticsi Data API-ga.

## Eeldused

Nõuab Google'i OAuth mandaate:
- `GOOGLE_CLIENT_ID`
- `GOOGLE_CLIENT_SECRET`
- Kehtiv OAuth juurdepääsutoken (värskendatakse vajadusel)

Sea mandaadid failis `.env`, `.env.local` või `~/.claude/.env.global`.

### Juurdepääsutokeni hankimine

```bash
# Step 1: Get authorization code (user must visit this URL in browser)
echo "https://accounts.google.com/o/oauth2/v2/auth?client_id=${GOOGLE_CLIENT_ID}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code&access_type=offline"

# Step 2: Exchange code for tokens
curl -s -X POST "https://oauth2.googleapis.com/token" \
  -d "code={AUTH_CODE}" \
  -d "client_id=${GOOGLE_CLIENT_ID}" \
  -d "client_secret=${GOOGLE_CLIENT_SECRET}" \
  -d "redirect_uri=urn:ietf:wg:oauth:2.0:oob" \
  -d "grant_type=authorization_code"

# Step 3: Refresh an expired token
curl -s -X POST "https://oauth2.googleapis.com/token" \
  -d "refresh_token={REFRESH_TOKEN}" \
  -d "client_id=${GOOGLE_CLIENT_ID}" \
  -d "client_secret=${GOOGLE_CLIENT_SECRET}" \
  -d "grant_type=refresh_token"
```

Hoia värskendustokenit turvaliselt. Juurdepääsutoken aegub 1 tunni pärast.

### Oma GA4 atribuudi ID leidmine

```bash
curl -s -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  "https://analyticsadmin.googleapis.com/v1beta/accountSummaries" \
  | python3 -c "
import json, sys
data = json.load(sys.stdin)
for acct in data.get('accountSummaries', []):
    for prop in acct.get('propertySummaries', []):
        print(f\"{prop['property']}  |  {prop.get('displayName','')}  |  Account: {acct.get('displayName','')}\")
"
```

Atribuudi ID vorming on `properties/XXXXXXXXX`.

---

## API baas

```
POST https://analyticsdata.googleapis.com/v1beta/{property_id}:runReport
```

Kõik aruandepäringud kasutavad POST-i JSON-kehaga. Lisa alati `Authorization: Bearer {ACCESS_TOKEN}`.

---

## 1. Liikluse ülevaate aruanne

Hangi seansid, kasutajad, lehevaatamised ja kaasatuse määr kuupäevavahemiku jooksul.

### Näide curl

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "newUsers"},
      {"name": "screenPageViews"},
      {"name": "engagementRate"},
      {"name": "averageSessionDuration"},
      {"name": "bounceRate"}
    ]
  }'
```

### Kuupäevavahemiku otseteed

- `today`, `yesterday`
- `7daysAgo`, `14daysAgo`, `28daysAgo`, `30daysAgo`, `90daysAgo`
- Konkreetsed kuupäevad: `2024-01-01`
- Võrdle perioode, edastades kaks dateRanges-i

---

## 2. Kasutaja omandamise aruanne

Vaata, kust kasutajad tulevad (kanalid, allikad, kampaaniad).

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "sessionDefaultChannelGroup"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "engagementRate"},
      {"name": "conversions"}
    ],
    "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}],
    "limit": 20
  }'
```

### Kasulikud omandamisdimensioonid

| Dimensioon | Kirjeldus |
|-----------|-------------|
| `sessionDefaultChannelGroup` | Kanalite rühmitus (Organic, Paid, Social jne) |
| `sessionSource` | Liiklusallikas (google, facebook jne) |
| `sessionMedium` | Kanal (organic, cpc, referral jne) |
| `sessionCampaignName` | UTM kampaania nimi |
| `firstUserSource` | Esimese puute omistamise allikas |

---

## 3. Parimate lehtede aruanne

Leia saidil kõige suurema liiklusega lehed.

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "pagePath"}
    ],
    "metrics": [
      {"name": "screenPageViews"},
      {"name": "totalUsers"},
      {"name": "engagementRate"},
      {"name": "averageSessionDuration"}
    ],
    "orderBys": [{"metric": {"metricName": "screenPageViews"}, "desc": true}],
    "limit": 25
  }'
```

---

## 4. Kaasatuse näitajad

Mõista, kuidas kasutajad su sisuga suhtlevad.

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "pagePath"}
    ],
    "metrics": [
      {"name": "engagedSessions"},
      {"name": "engagementRate"},
      {"name": "averageSessionDuration"},
      {"name": "screenPageViewsPerSession"},
      {"name": "eventCount"}
    ],
    "orderBys": [{"metric": {"metricName": "engagedSessions"}, "desc": true}],
    "limit": 20
  }'
```

### Peamised kaasatuse näitajad

| Näitaja | Mida see mõõdab |
|--------|-----------------|
| `engagementRate` | % seanssidest, mis olid kaasatud (>10 s, 2+ lehte või konversioon) |
| `averageSessionDuration` | Keskmine seansi pikkus sekundites |
| `screenPageViewsPerSession` | Lehti seansi kohta |
| `bounceRate` | % seanssidest ilma kaasatuseta |
| `eventCount` | Käivitatud sündmusi kokku |

---

## 5. Konversiooni jälgimine

Raporteeri konversioonisündmusi (ostud, registreerumised jne).

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "eventName"}
    ],
    "metrics": [
      {"name": "eventCount"},
      {"name": "totalUsers"},
      {"name": "eventValue"}
    ],
    "dimensionFilter": {
      "filter": {
        "fieldName": "eventName",
        "inListFilter": {
          "values": ["purchase", "sign_up", "generate_lead", "begin_checkout"]
        }
      }
    }
  }'
```

### Konversioon kanali kaupa

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "sessionDefaultChannelGroup"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "conversions"},
      {"name": "totalRevenue"}
    ],
    "orderBys": [{"metric": {"metricName": "conversions"}, "desc": true}]
  }'
```

---

## 6. Sihtrühma segmendid

Jaota liiklus seadme, geograafia ja demograafia kaupa.

### Seadme kategooria järgi

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [{"name": "deviceCategory"}],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "engagementRate"},
      {"name": "conversions"}
    ]
  }'
```

### Riigi järgi

Asenda dimensioonides `deviceCategory` väärtusega `country`.

### Maandumislehe + allika järgi

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
    "dimensions": [
      {"name": "landingPage"},
      {"name": "sessionSource"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "engagementRate"},
      {"name": "conversions"}
    ],
    "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}],
    "limit": 30
  }'
```

---

## 7. Perioodide võrdlus

Võrdle kahte ajaperioodi, et tuvastada trende.

```bash
curl -s -X POST \
  "https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY_ID}:runReport" \
  -H "Authorization: Bearer ${GA_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "dateRanges": [
      {"startDate": "30daysAgo", "endDate": "today", "name": "current"},
      {"startDate": "60daysAgo", "endDate": "31daysAgo", "name": "previous"}
    ],
    "metrics": [
      {"name": "sessions"},
      {"name": "totalUsers"},
      {"name": "conversions"},
      {"name": "engagementRate"}
    ]
  }'
```

---

## Vastuse parsimine

GA4 API tagastab JSON-i. Parsi python3 või jq-ga:

```bash
# Parse report into a table
curl -s -X POST "..." | python3 -c "
import json, sys
data = json.load(sys.stdin)
headers = [h['name'] for h in data.get('dimensionHeaders',[])] + [m['name'] for m in data.get('metricHeaders',[])]
print(' | '.join(headers))
print('-' * (len(headers) * 20))
for row in data.get('rows', []):
    dims = [d['value'] for d in row.get('dimensionValues',[])]
    mets = [m['value'] for m in row.get('metricValues',[])]
    print(' | '.join(dims + mets))
"
```

---

## Töövoog: igakuine analüütikaaruanne

Kui küsitakse igakuist aruannet:

1. Tõmba liikluse ülevaade (seansid, kasutajad, lehevaatamised) koos perioodide võrdlusega
2. Tõmba omandamise jaotus kanali kaupa
3. Tõmba top 20 lehte lehevaatamiste järgi
4. Tõmba konversioonikokkuvõte kanali kaupa
5. Tõmba seadme ja riigi jaotus

Esita struktureeritud aruandena tabelite, trendide (üles/alla nooled) ja soovitustega:

```
## Monthly Analytics Report: {Property Name}
### Period: {date range} vs {previous period}

### Traffic Summary
| Metric | Current | Previous | Change |
|--------|---------|----------|--------|
| Sessions | X | Y | +Z% |
| ...

### Top Channels
...

### Top Pages
...

### Conversion Summary
...

### Recommendations
- [Based on data patterns]
```

## Levinud probleemid

- **403 Forbidden**: Kasutajal puudub juurdepääs GA4 atribuudile
- **Tühjad read**: Pole andmeid taotletud kuupäevavahemiku või filtrite jaoks
- **Kvoot ületatud**: GA4 API-l on päevakvoodid; vähenda kuupäevavahemikke või rühmita päringud
- **Atribuuti ei leitud**: Kontrolli atribuudi ID vormingut (`properties/XXXXXXXXX`)