Google Analytics Admin API v1'e geçiş yapın

API'nin Alfa ve Beta kanalları desteklenmeye devam etmektedir. Beta kanalı, alfa sürümünde mevcut olan ve kararlı olarak kabul edilen ve gelecekte önemli bir değişikliğe uğraması beklenmeyen özelliklerin bir alt kümesini içerir. Yeni özellikler olgunlaştıkça Beta'ya eklenecek.

Bu belgede, mevcut kodun Google Analytics Management API v3'ten Google Analytics Admin API v1'e nasıl taşınacağı ile ilgili talimatlar ve iki API arasındaki temel farklara kısa bir genel bakış yer almaktadır.

Neden taşıma yapmam gerekiyor?

Uygulamanızın Google Analytics 4 mülkü oluşturması veya yapılandırması gerekiyorsa Admin API v1'i kullanmalıdır. Management API v3 yalnızca Universal Analytics mülkleriyle, Admin API v1 ise yalnızca Google Analytics 4 mülkleriyle çalışır.

Ön koşullar

Hızlı başlangıç kılavuzunu okuyarak Admin API v1 sürümünün temel özellikleri hakkında bilgi sahibi olmanız gerekir.

Başlayın

Başlamak için bir Google Analytics 4 mülkü hazırlayacak, Admin API v1'i etkinleştirecek ve ardından platformunuza uygun bir API istemci kitaplığı oluşturacaksınız.

Google Analytics 4 mülkü hazırlama

Admin API v1'i desteklemek için kodunuzu taşımadan önce web sitenizi Google Analytics 4 mülkü kullanacak şekilde taşımanız gerekir.

API'yi etkinleştirme

Seçili Google Cloud projenizde Admin API v1'i otomatik olarak etkinleştirmek için bu düğmeyi tıklayın.

Google Analytics Admin API'yi etkinleştirme

İstemci kitaplığı kullanma

İstemci kitaplığı yükleme

İstemci kitaplığı kullanıyorsanız programlama diliniz için Admin API v1 istemci kitaplığını yüklemeniz gerekir.

İstemci kitaplığını başlatma

Admin API v1 istemci kitaplıkları, hızlı bir başlangıç yapmanız için tasarlanmıştır. Varsayılan olarak, istemci kitaplıkları hizmet hesabı kimlik bilgilerinizi otomatik olarak bulmaya çalışır.

Hizmet hesabı kimlik bilgilerini sağlamanın kolay bir yolu, GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlamaktır. API istemcisi, hizmet hesabı anahtarı JSON dosyasını bulmak için bu değişkenin değerini kullanır.

Örneğin, aşağıdaki komutu çalıştırıp hizmet hesabı JSON dosyasının yolunu kullanarak hizmet hesabı kimlik bilgilerini ayarlayabilirsiniz:

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

Aşağıda, Admin API v1 istemci kitaplıklarını başlatmak için yaygın olarak kullanılan kod snippet'leri bulunmaktadır.

Java

    try (AnalyticsAdminServiceClient analyticsAdmin = AnalyticsAdminServiceClient.create()) {

Python

client = AlphaAnalyticsAdminClient()

.NET

AlphaAnalyticsAdminClient client = AlphaAnalyticsAdminClient.Create();

PHP

$client = new AlphaAnalyticsAdminClient();

Node.js

  // Imports the Google Analytics Data API client library.
  const {AlphaAnalyticsAdminClient} = require('@google-analytics/admin');

  // Using a default constructor instructs the client to use the credentials
  // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
  const analyticsAdminClient = new AlphaAnalyticsAdminClient();

Bir ortam değişkeni kullanmak yerine, kimlik bilgileri bilgilerini başlatma sırasında açıkça bir API istemci örneğine geçirmek de mümkündür.

İstemci kitaplığı kullanmıyorsanız

Management API v3'ü istemci kitaplığı olmadan kullanıyorsanız ve bunu Admin API v1 ile devam etmek istiyorsanız kimlik bilgilerinizi kullanmaya devam edebilirsiniz.

Admin API tarafından sağlanan yeni HTTP uç noktası ve keşif belgesini kullanmanız gerekir:

Kodunuz bir Keşif belgesinden yararlanıyorsa bu belgeyi, Admin API v1 tarafından sağlanan keşif belgesine güncellemeniz gerekir:

Uç noktayı güncelledikten sonra, JSON sorgunuzu güncellemek için yeni istek yapısı ve Admin API kavramları hakkında bilgi edinmeniz gerekir.

Genel görevler

Hesapları yönet

Admin API v1, Management API v3'e benzer bir dizi Google Analytics hesap ve mülk yönetimi yöntemi sunar. Ayrıca Admin API v1, Google Analytics hesaplarını sağlama, silme ve güncelleme işlevleri sunar.

  • Admin API v1 mülk yönetimi yöntemleri yalnızca Google Analytics 4 mülklerini destekler.

  • Admin API v1'de görünüm (profil) kavramı yoktur.

  • Veri akışları Google Analytics 4'te kullanıma sunulduğundan belirli bilgiler artık mülk düzeyinde mevcut değildir. Örneğin, websiteUrl alanı artık mülk nesnesinin bir parçası değil, DataStream varlığında yer almaktadır.

Hesap özetlerini listeleme

Admin API'nin accountSummaries yöntemi, Management API v3'ün accountSummaries yöntemine benzer şekilde, çağrıyı yapan tarafından erişilebilen tüm hesapların basit özetlerini döndürür.

Önemli bir fark, Admin API v1'in yalnızca Google Analytics 4 mülkleri hakkında bilgi döndürmesi, Management API v3 yanıtlarının ise Universal Analytics ile oluşturulan mülkler hakkında veri içermesidir. Tek bir çağrı kullanılarak her iki özellik türü hakkında bilgi almak mümkün değildir.

Google Analytics 4'te görünüm (profil) olmadığından Admin API tarafından döndürülen hesap özetleri görünüm (profil) bilgisi içermez.

Google Analytics 4 hesap özeti verileri, geçerli kullanıcıya sunulan hesapların/mülklerin kaynak ve görünen adlarıyla sınırlıdır.

account.get ve property.get yöntemlerini çağırarak yapılandırma verilerinin tamamını almak için özet yanıtının account, property alanlarında döndürülen kaynak adlarını kullanın.

Admin API v1 İsteği

GET https://analyticsadmin.googleapis.com/v1beta/accountSummaries?key=[YOUR_API_KEY]

Admin API v1 Yanıtı

{
  "accountSummaries": [
    {
      "name": "accountSummaries/XXXXXX",
      "account": "accounts/XXXXXX",
      "displayName": "Test",
      "propertySummaries": [
        {
          "property": "properties/XXXXXX",
          "displayName": "Test App"
        }
      ]
    },
    ...
}

Management API v3 İsteği

GET https://analytics.googleapis.com/analytics/v3/management/accountSummaries?key=[YOUR_API_KEY]

Management API v3 Yanıtı

{
  "kind": "analytics#accountSummaries",
  "username": "XXXXXX",
  "totalResults": 9,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "XXXXXX",
      "kind": "analytics#accountSummary",
      "name": "Test Account",
      "webProperties": [
        {
          "kind": "analytics#webPropertySummary",
          "id": "UA-XXXXXX",
          "name": "Test Property",
          "internalWebPropertyId": "XXXXXX",
          "level": "STANDARD",
          "websiteUrl": "XXXXXX",
          "profiles": [
            {
              "kind": "analytics#profileSummary",
              "id": "XXXXXX",
              "name": "Test Profile",
              "type": "WEB"
            }
          ]
        },
        ...
}

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient


def list_account_summaries(transport: str = None) -> None:
    """
    Prints summaries of all accounts accessible by the caller.

    Args:
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_account_summaries()

    print("Result:")
    for account_summary in results:
        print("-- Account --")
        print(f"Resource name: {account_summary.name}")
        print(f"Account name: {account_summary.account}")
        print(f"Display name: {account_summary.display_name}")
        print()
        for property_summary in account_summary.property_summaries:
            print("-- Property --")
            print(f"Property resource name: {property_summary.property}")
            print(f"Property display name: {property_summary.display_name}")
            print()


Hesapları listeleme

Admin API v1'in accounts.list yöntemi, Management API v3'ün accounts.list yöntemine benzer şekilde çağrıyı yapan tarafından erişilebilen tüm hesapları döndürür.

Admin API v1 İsteği

GET https://analyticsadmin.googleapis.com/v1beta/accounts?key=[YOUR_API_KEY]

Admin API v1 Yanıtı

{
  "accounts": [
    {
      "name": "accounts/XXXXXX",
      "createTime": "2020-02-21T00:17:33.282Z",
      "updateTime": "2021-01-07T02:47:57.386Z",
      "displayName": "Test Account",
      "regionCode": "US"
    },
  ...
}

Management API v3 İsteği

GET https://analytics.googleapis.com/analytics/v3/management/accounts?key=[YOUR_API_KEY]

Management API v3 Yanıtı

{
  "kind": "analytics#accounts",
  "username": "XXXXXX",
  "totalResults": 9,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "XXXXXX",
      "kind": "analytics#account",
      "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
      "name": "Test Account",
      "permissions": {
        "effective": [
          "COLLABORATE",
          "EDIT",
          "READ_AND_ANALYZE"
        ]
      },
      "created": "2020-02-21T00:17:33.282Z",
      "updated": "2021-01-07T02:47:57.386Z",
      "childLink": {
        "type": "analytics#webproperties",
        "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties"
      }
    },
    ...
}

Admin API v1 yanıtının etkin kullanıcı izinleri hakkında bilgi veya Management API v3'te bulunan childLink alanı hakkında bilgi içermediğini unutmayın.

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient

from accounts_get import print_account


def list_accounts(transport: str = None):
    """
    Lists the Google Analytics accounts available to the current user.

    Args:
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_accounts()

    print("Result:")
    for account in results:
        print_account(account)


Mülkleri yönetme

Mülkleri listeleme

Admin API v1'in properties.list yöntemi, erişilebilir tüm Universal Analytics mülklerini döndüren Management API v3'ün webproperties.list yöntemine benzer şekilde, çağrıyı yapan tarafından erişilebilen tüm Google Analytics 4 mülklerini döndürür.

websiteUrl alanı artık Google Analytics 4'te mülk düzeyinde bulunmadığından mülkle ilişkili tüm veri akışlarını listelemek için properties.dataStreams/list alanını kullanın ve bir akışla ilişkili web sitesi URL'sini almak için defaultUri alanını arayın.

properties.list isteğinin URL'sindeki filter parametresini not edin. Parametrenin değeri, isteğin sonuçlarını filtrelemek için bir ifade içerir ve belirli bir Google Analytics hesap kimliğiyle ya da bağlı Firebase projesiyle ilişkilendirilen mülkleri listelemek için kullanılabilir.

Admin API v1 İsteği

GET https://analyticsadmin.googleapis.com/v1beta/properties?filter=parent:accounts/XXXXXX&key=[YOUR_API_KEY]

Admin API v1 Yanıtı

{
  "properties": [
    {
      "name": "properties/XXXXXX",
      "parent": "accounts/XXXXXX",
      "createTime": "2020-10-29T04:02:49.124Z",
      "updateTime": "2020-10-29T04:02:49.124Z",
      "displayName": "Test Property",
      "timeZone": "America/Los_Angeles",
      "currencyCode": "USD"
    },
    ...
}

Management API v3 İsteği

GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties?key=[YOUR_API_KEY]

Management API v3 Yanıtı

{
  "kind": "analytics#webproperties",
  "username": "XXXXXX",
  "totalResults": 33,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "UA-XXXXXX-1",
      "kind": "analytics#webproperty",
      "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1",
      "accountId": "XXXXXX",
      "internalWebPropertyId": "XXXXXX",
      "name": "Test Account",
      "websiteUrl": "XXXXXX",
      "level": "PREMIUM",
      "profileCount": 4,
      "industryVertical": "HEALTH",
      "defaultProfileId": "XXXXXX",
      "dataRetentionTtl": "INDEFINITE",
      "dataRetentionResetOnNewActivity": true,
      "permissions": {
        "effective": [
          "COLLABORATE",
          "EDIT",
          "READ_AND_ANALYZE"
        ]
      },
      "created": "2020-02-21T00:28:47.287Z",
      "updated": "2021-01-27T21:39:22.704Z",
      "parentLink": {
        "type": "analytics#account",
        "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
      },
      "childLink": {
        "type": "analytics#profiles",
        "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/profiles"
      }
    },
    ...
}

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import ListPropertiesRequest


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"
    list_properties(account_id)


def list_properties(account_id: str, transport: str = None):
    """
    Lists Google Analytics 4 properties under the specified parent account
    that are available to the current user.

    Args:
        account_id(str): The Google Analytics account ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_properties(
        ListPropertiesRequest(filter=f"parent:accounts/{account_id}", show_deleted=True)
    )

    print("Result:")
    for property_ in results:
        print(property_)
        print()


Mülk alma

Admin API v1'in properties.get yöntemi, Management API v3'ün webproperties.get yöntemine benzer şekilde Google Analytics 4 mülküyle ilgili bilgileri döndürür.

Admin API'nin properties.get yönteminin yalnızca Google Analytics 4 mülklerini desteklediğini unutmayın.

Admin API v1 İsteği

GET https://analyticsadmin.googleapis.com/v1beta/properties/XXXXXX?key=[YOUR_API_KEY]

Admin API v1 Yanıtı

{
  "name": "properties/XXXXXX",
  "parent": "accounts/XXXXXX",
  "createTime": "2021-04-30T21:32:49.804Z",
  "updateTime": "2021-04-30T21:32:49.804Z",
  "displayName": "Test Property",
  "industryCategory": "FINANCE",
  "timeZone": "America/Los_Angeles",
  "currencyCode": "USD"
}

Management API v3 İsteği

GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3?key=[YOUR_API_KEY]

Management API v3 Yanıtı

{
  "id": "UA-XXXXXX-3",
  "kind": "analytics#webproperty",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3",
  "accountId": "XXXXXX",
  "internalWebPropertyId": "XXXXXX",
  "name": "Test 2",
  "websiteUrl": "YOUR-WEBSITE-URL",
  "level": "STANDARD",
  "profileCount": 0,
  "industryVertical": "FINANCE",
  "dataRetentionTtl": "MONTHS_26",
  "dataRetentionResetOnNewActivity": true,
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ]
  },
  "created": "2021-05-20T05:35:51.985Z",
  "updated": "2021-05-20T05:41:39.219Z",
  "parentLink": {
    "type": "analytics#account",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
  },
  "childLink": {
    "type": "analytics#profiles",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3/profiles"
  }
}

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import IndustryCategory


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    get_property(property_id)


def get_property(property_id: str, transport: str = None):
    """
    Retrieves the Google Analytics 4 property details.

    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    property_ = client.get_property(name=f"properties/{property_id}")

    print("Result:")
    print_property(property_)


def print_property(property):
    """Prints the Google Analytics 4 property details."""
    print(f"Resource name: {property.name}")
    print(f"Parent: {property.parent}")
    print(f"Display name: {property.display_name}")
    print(f"Create time: {property.create_time}")
    print(f"Update time: {property.update_time}")
    # print(f"Delete time: {property.delete_time}")
    # print(f"Expire time: {property.expire_time}")

    if property.industry_category:
        print(f"Industry category: {IndustryCategory(property.industry_category).name}")

    print(f"Time zone: {property.time_zone}")
    print(f"Currency code: {property.currency_code}")


Mülk oluştur

Admin API v1'in properties.create yöntemi, Management API v3'ün webproperties.insert yöntemine benzer şekilde yeni bir Google Analytics 4 mülkü oluşturur.

Admin API v1 İsteği

POST https://analyticsadmin.googleapis.com/v1beta/properties?key=[YOUR_API_KEY]

{
  "displayName": "Test Property",
  "industryCategory": "AUTOMOTIVE",
  "currencyCode": "USD",
  "timeZone": "America/Los_Angeles",
  "parent": "accounts/XXXXXX"
}

Admin API v1 Yanıtı

{
  "name": "properties/XXXXXX",
  "parent": "accounts/XXXXXX",
  "createTime": "2021-05-20T09:16:08.458Z",
  "updateTime": "2021-05-20T09:16:08.458Z",
  "displayName": "Test Property",
  "industryCategory": "AUTOMOTIVE",
  "timeZone": "America/Los_Angeles",
  "currencyCode": "USD"
}

Management API v3 İsteği

POST https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties?key=[YOUR_API_KEY]

{
  "name": "Test",
  "websiteUrl": "YOUR-WEBSITE-URL"
}

Management API v3 Yanıtı

{
  "id": "UA-XXXXXX-3",
  "kind": "analytics#webproperty",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3",
  "accountId": "XXXXXX",
  "internalWebPropertyId": "XXXXXX",
  "name": "Test",
  "websiteUrl": "YOUR-WEBSITE-URL",
  "level": "STANDARD",
  "profileCount": 0,
  "dataRetentionTtl": "MONTHS_26",
  "dataRetentionResetOnNewActivity": true,
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ]
  },
  "created": "2021-05-20T05:35:51.985Z",
  "updated": "2021-05-20T05:35:51.985Z",
  "parentLink": {
    "type": "analytics#account",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
  },
  "childLink": {
    "type": "analytics#profiles",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3/profiles"
  }
}

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import Property


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics account ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"
    create_property(account_id)


def create_property(account_id: str, transport: str = None):
    """
    Creates a Google Analytics 4 property.

    Args:
        account_id(str): The Google Analytics Account ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    property_ = client.create_property(
        property=Property(
            parent=f"accounts/{account_id}",
            currency_code="USD",
            display_name="Test property",
            industry_category="OTHER",
            time_zone="America/Los_Angeles",
        )
    )

    print("Result:")
    print(property_)


Mülk güncelleme/yama uygulama

Admin API v1'in properties.patch yöntemi, Management API v3'ün webproperties.patch yöntemine benzer şekilde Google Analytics 4 mülkünün yapılandırmasını günceller.

İsteğin URL'sinde, güncellenecek alanların virgülle ayrılmış listesini içeren updateMask parametresini not edin. Bu listede bulunmayan alanlar güncellenmez. İstemci kitaplığı kullanıyorsanız yöntem imzasının bir parçası olarak update_mask parametresi kullanılabilir.

Admin API v1 İsteği

PATCH https://analyticsadmin.googleapis.com/v1beta/properties/XXXXXX?updateMask=displayName,industryCategory&key=[YOUR_API_KEY]

{
  "displayName": "New Property Name",
  "industryCategory": "FINANCE"
}

Admin API v1 Yanıtı

{
  "name": "properties/XXXXXX",
  "parent": "accounts/XXXXXX",
  "createTime": "2021-04-30T21:32:49.804Z",
  "updateTime": "2021-05-20T09:25:14.810Z",
  "displayName": "New Property Name",
  "industryCategory": "FINANCE",
  "timeZone": "America/Los_Angeles",
  "currencyCode": "USD"
}

Management API v3 İsteği

PATCH https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3?key=[YOUR_API_KEY]

{
  "name": "New Property Name",
  "industryVertical": "FINANCE"
}

Management API v3 Yanıtı

{
  "id": "UA-XXXXXX-3",
  "kind": "analytics#webproperty",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3",
  "accountId": "XXXXXX",
  "internalWebPropertyId": "XXXXXX",
  "name": "New Property Name",
  "websiteUrl": "XXXXXX",
  "level": "STANDARD",
  "profileCount": 0,
  "industryVertical": "FINANCE",
  "dataRetentionTtl": "MONTHS_26",
  "dataRetentionResetOnNewActivity": true,
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ]
  },
  "created": "2021-05-20T05:35:51.985Z",
  "updated": "2021-05-20T05:41:39.219Z",
  "parentLink": {
    "type": "analytics#account",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
  },
  "childLink": {
    "type": "analytics#profiles",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3/profiles"
  }
}

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import Property
from google.protobuf.field_mask_pb2 import FieldMask


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics property ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    update_property(property_id)


def update_property(property_id: str, transport: str = None):
    """
    Updates the Google Analytics 4 property.

    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    # This call updates the display name, industry category and time zone of the
    # property, as indicated by the value of the `update_mask` field.
    # The property to update is specified in the `name` field of the `Property`
    # instance.
    property_ = client.update_property(
        property=Property(
            name=f"properties/{property_id}",
            display_name="This is an updated test property",
            industry_category="GAMES",
            time_zone="America/New_York",
        ),
        update_mask=FieldMask(paths=["display_name", "time_zone", "industry_category"]),
    )

    print("Result:")
    print(property_)


Kullanıcıları yönetme

Google Analytics Admin API şu anda birkaç farklılık dışında, Management API v3'e benzer bir kullanıcı izinleri modeli uygulamaktadır.

  1. Kullanıcı izinlerini Google Analytics Admin API ile, Management API v3'teki AccountUserLink, WebPropertyUserLink ve ProfileUserLink kaynakları yerine AccessBinding hesabı ve mülk AccessBinding kaynaklarını kullanarak yönetirsiniz.
  2. Google Analytics Admin API'deki mülk erişimi bağlamaları, örtülü izinleri veya hesap erişimi bağlamalarından devralınan izinleri içermez. Management API v3'te her kullanıcı bağlantısı, hem örtülü hem de devralınan izinleri içeren bir permissions.effective koleksiyonu içeriyordu.

AccessBinding varlığı, bir kullanıcıyı (e-posta adresi) ve kullanıcıya verilen rollerin listesini içerir. AccessBinding varlığı oluşturulabilir, güncellenebilir veya silinebilir.

Admin API v1 rol adları ile Management API v3 izni adları arasındaki eşleme aşağıdaki gibidir:

Admin API v1 rolü Management API v3 izin adı
önceden tanımlanmışRoller/görüntüleyici READ_AND_ANALYZE
önceden tanımlanmış roller/analiz uzmanı ORTAK ÇALIŞMA
önceden tanımlanmışRoller/düzenleyici DÜZENLE
önceden tanımlanmışRoller/yönetici MANAGE_USERS

predefinedRoles/no-cost-data ve predefinedRoles/no-revenue-data rolleri Admin API v1'de kullanıma sunuldu ve Management API v3'te bunlara karşılık gelen bir eşleme yok.

Bu kılavuzda, hesap düzeyinde erişim bağlantılarının nasıl yönetileceği gösterilmektedir. Mülk düzeyindeki erişim bağlantılarını yönetmek için aynı süreci uygulayın ancak AccessBinding hesabı yerine mülkAccessBinding kaynaklarını ve yöntemlerini kullanın.

Hesap erişimi bağlamalarını listeleyin

Admin API v1'in accounts.accessBindings.list yöntemi, Management API v3'ün accountUserLinks.list yöntemine benzer şekilde bir hesaptaki tüm erişim bağlamalarını listeler.

Admin API v1 İsteği

GET https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings/XXXXXXXX

Admin API v1 Yanıtı

{
  "accessBindings": [
    {
      "name": "accounts/XXXXXX/accessBindings/XXXXXX",
      "user": "XXXXXX",
      "roles": [
        "predefinedRoles/editor",
        "predefinedRoles/admin"
      ]
    }
  ]
}

Management API v3 İsteği

GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks?key=[YOUR_API_KEY]

Management API v3 Yanıtı

{
  "kind": "analytics#entityUserLinks",
  "totalResults": 1,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "XXXXXX:XXXXXX",
      "kind": "analytics#entityUserLink",
      "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX:XXXXXX",
      "entity": {
        "accountRef": {
          "id": "XXXXXX",
          "kind": "analytics#accountRef",
          "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
          "name": "This is a test account"
        }
      },
      "userRef": {
        "kind": "analytics#userRef",
        "id": "XXXXXX",
        "email": "XXXXXX"
      },
      "permissions": {
        "effective": [
          "COLLABORATE",
          "EDIT",
          "MANAGE_USERS",
          "READ_AND_ANALYZE"
        ],
        "local": [
          "EDIT",
          "MANAGE_USERS"
        ]
      }
    }
  ]
}

İstemci kitaplıklarını kullanarak Admin API'yi çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"
    list_account_access_bindings(account_id)


def list_account_access_bindings(account_id: str, transport: str = None):
    """
    Lists access bindings under the specified parent account.

    Args:
        account_id(str): The id of the account.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_access_bindings(parent=f"accounts/{account_id}")

    print("Result:")
    for access_binding in results:
        print(access_binding)
        print()


Hesap erişimi bağlantılarını güncelleyin

Admin API v1'in accounts.accessBindings.patch yöntemi, bir hesabın erişim bağlamasını Management API v3'ün accountUserLinks.update yöntemine benzer şekilde günceller.

Admin API v1 İsteği

PATCH https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings/XXXXXXXX

{
  "roles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ]
}

Admin API v1 Yanıtı

{
  "name": "accounts/XXXXXX/accessBindings/XXXXXXXX",
  "user": "USER-EMAIL",
  "directRoles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ]
}

Management API v3 İsteği

PUT https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX%3A104236685715552897132?key=[YOUR_API_KEY]

{
  "entity": {
    "accountRef": {
      "id": "XXXXXX"
    }
  },
  "userRef": {
    "email": "XXXXXX"
  },
  "permissions": {
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

Management API v3 Yanıtı

{
  "id": "XXXXXX:104236685715552897132",
  "kind": "analytics#entityUserLink",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX:104236685715552897132",
  "entity": {
    "accountRef": {
      "id": "XXXXXX",
      "kind": "analytics#accountRef",
      "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
      "name": "This is a test account"
    }
  },
  "userRef": {
    "kind": "analytics#userRef",
    "id": "104236685715552897132",
    "email": "XXXXXX"
  },
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ],
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import AccessBinding


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics property ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"

    # TODO(developer): Replace this variable with your Google Analytics
    #  account access binding ID (e.g. "123456") before running the sample.
    account_access_binding_id = "YOUR-ACCOUNT-ACCESS-BINDING-ID"

    update_account_access_binding(account_id, account_access_binding_id)


def update_account_access_binding(
    account_id: str, account_access_binding_id: str, transport: str = None
):
    """
    Updates the account access binding.

    Args:
        account_id(str): The Google Analytics Account ID.
        account_access_binding_id(str): Google Analytics account access binding ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    # This call updates the roles of the access binding. The access binding to
    # update is specified in the `name` field of the `AccessBinding` instance.
    access_binding = client.update_access_binding(
        access_binding=AccessBinding(
            name=f"accounts/{account_id}/accessBindings/{account_access_binding_id}",
            roles=["predefinedRoles/collaborate"],
        ),
    )

    print("Result:")
    print(access_binding)


Hesap erişimi bağlamaları oluşturma

Admin API v1'in accounts.accessBindings.create yöntemi bir hesapta Management API v3'ün accountUserLinks.insert yöntemine benzer şekilde bir erişim bağlantısı oluşturur.

Admin API v1 İsteği

POST https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings

{
  "roles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ],
  "user": "USER-EMAIL"
}

Admin API v1 Yanıtı

{
  "name": "accounts/XXXXXX/accessBindings/XXXXXXXX",
  "user": "USER-EMAIL",
  "roles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ]
}

Management API v3 İsteği

POST https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks?key=[YOUR_API_KEY]

{
  "entity": {
    "accountRef": {
      "id": "XXXXXX"
    }
  },
  "userRef": {
    "email": "XXXXXX"
  },
  "permissions": {
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

Management API v3 Yanıtı

{
  "id": "XXXXXX:114236685715552897132",
  "kind": "analytics#entityUserLink",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX:114236685715552897132",
  "entity": {
    "accountRef": {
      "id": "XXXXXX",
      "kind": "analytics#accountRef",
      "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
      "name": "This is a test account"
    }
  },
  "userRef": {
    "kind": "analytics#userRef",
    "id": "114236685715552897132",
    "email": "XXXXXX"
  },
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ],
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessBinding,
    CreateAccessBindingRequest,
)


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics account ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"

    # TODO(developer): Replace this variable with an email address of the user to
    #  link. This user will be given access to your account after running the
    #  sample.
    email_address = "TEST-EMAIL-ADDRESS"

    create_account_access_binding(account_id, email_address)


def create_account_access_binding(
    account_id: str, email_address: str, transport: str = None
):
    """
    Creates a access binding for the account.

    Args:
        account_id(str): The Google Analytics Account ID.
        email_address(str): Email address of the access binding user.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    access_binding = client.create_access_binding(
        CreateAccessBindingRequest(
            parent=f"accounts/{account_id}",
            access_binding=AccessBinding(
                user=email_address, roles=["predefinedRoles/read"]
            ),
        )
    )

    print("Result:")
    print(access_binding)


Gruplama

Admin API v1, Management API v3'ün aksine çok parçalı/karma içerik türünü kullanarak birden fazla Google Analytics API çağrısının toplu olarak işlenmesini desteklemez.

Bunun yerine, toplu işlem API düzeyinde açık bir şekilde desteklenir. Admin API v1'in aşağıdaki yöntemleri toplu hale getirme işlevini destekler:

İstemci kitaplıklarını kullanarak Admin API v1'i çağırmaya yönelik örnek kod:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessBinding,
    BatchCreateAccessBindingsRequest,
    CreateAccessBindingRequest,
)


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics account ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"

    # TODO(developer): Replace this variable with an email address of the user to
    #  link. This user will be given access to your account after running the
    #  sample.
    email_address = "TEST-EMAIL-ADDRESS"

    batch_create_account_access_binding(account_id, email_address)


def batch_create_account_access_binding(
    account_id: str, email_address: str, transport: str = None
):
    """
    Creates a access binding for the account using a batch call.

    Args:
        account_id(str): The Google Analytics Account ID.
        email_address(str): Email address of the access binding user.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    response = client.batch_create_access_bindings(
        BatchCreateAccessBindingsRequest(
            parent=f"accounts/{account_id}",
            requests=[
                CreateAccessBindingRequest(
                    access_binding=AccessBinding(
                        user=email_address,
                        roles=["predefinedRoles/read"],
                    )
                )
            ],
        )
    )

    print("Result:")
    for access_binding in response.access_bindings:
        print(access_binding)
        print()


API kotası değişiklikleri

Admin API v1, Management API v3'e kıyasla daha az kısıtlayıcı kotalar sunmaktadır.

  • Admin API v1'e yapılan isteklerin sayısı, bir GCP projesinde varsayılan olarak dakika başına 600 istek ile sınırlandırılmıştır.
  • Şu anda, GCP projesi başına Admin API v1 çağrısı sayısıyla ilgili günlük sınır kotası yoktur. Teorik olarak günlük maksimum istek sayısının hâlâ dakika başına istek sayısı kotasıyla sınırlı olduğunu unutmayın.
  • Günlük yazma işlemi sayısıyla ilgili ayrı bir sınır kaldırılmıştır.