Ceci est le premier article de l'article Qiita. Je pense qu'il y a certains points qui ne peuvent pas être atteints, y compris la première utilisation de l'API, mais merci.
Mon entreprise utilise Google Analytics (GA) pour mesurer les chiffres sur le site. Il y avait des employés et je l'utilisais depuis plus de quelques années, mais je ne pouvais pas gérer correctement l'opération et la maintenance. Divers comptes et propriétés sont devenus encombrés.
Sur l'écran de gestion GA, il est possible d'afficher la liste des comptes et des propriétés en défilant. L'objectif de cette fois est de rendre les résultats disponibles pour affichage sur des feuilles de calcul.
En utilisant l'API suivante, vous pouvez obtenir les données de compte GA associées au compte Chrome connecté au format JSON. API de gestion> Référence> Compte: liste
Même si vous formatez le résultat de l'exécution, vous pourrez faire ce que vous voulez faire dans une certaine mesure. Convertir le fichier JSON en Excel Je souhaite convertir un fichier JSON en fichier CSV
La première méthode n'a pas pu être exécutée en raison de la version d'Excel, et lorsque j'ai essayé la deuxième méthode, un problème est survenu.
Compte | Propriété_1 | Vue_1_1 | Vue_1_2 | ・ ・ ・ | Propriété_2 | ・ ・ ・ |
---|---|---|---|---|---|---|
A | Propriété 1 associée à A | Vue 1 associée à la propriété 1 | Vue 2 associée à la propriété 1 | ・ ・ ・ | Propriété 2 associée à A | ・ ・ ・ |
Ce que je voulais à l'origine, c'était les données verticales suivantes.
Compte | Propriété | Vue |
---|---|---|
A | Propriété 1 associée à A | Vue 1 associée à la propriété 1 |
A | Propriété 1 associée à A | Vue 2 associée à la propriété 1 |
A | ・ ・ ・ | ・ ・ ・ |
A | Une propriété associée 2 | Vue 1 associée à la propriété 2 |
A | ・ ・ ・ | ・ ・ ・ |
B | Propriété 1 associée à B | Vue 1 associée à la propriété 1 |
Je travaille après avoir ajouté le compte de service émis au compte GA que je souhaite acquérir. À l'origine, je souhaitais associer un compte GA à un compte administrateur interne, mais je ne sais pas comment y faire face. ..
J'avais beaucoup de comptes et c'était dur, alors j'ai travaillé d'une seule main en chantant et j'ai survécu. Lol
Vous trouverez ci-dessous le code d'implémentation du sujet principal.
La plupart du code d'implémentation est tiré du dessous. First Analytics API: Python Quickstart for Service Accounts
Nous utilisons l'API pour créer un df pour chaque compte, propriété et vue, et laissons un df vide s'ajouter. API de gestion> Référence> Propriétés Web: liste API de gestion> Référence> Affichage (ancien profil): liste
qiita.python
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
import numpy as np
def get_service(api_name, api_version, scopes, key_file_location):
credentials = ServiceAccountCredentials.from_json_keyfile_name(
key_file_location, scopes=scopes)
service = build(api_name, api_version, credentials=credentials)
return service
def get_account_propaty_view_info(service):
accounts = service.management().accounts().list().execute()
#Stocker la liste des comptes dans df
account_df = pd.DataFrame(columns=['account_name', 'account_id'])
for account in accounts.get('items', []):
account_array = np.array([[account.get('name'), account.get('id')]])
df_account = pd.DataFrame(data=account_array,columns=account_df.columns)
account_df = account_df.append(df_account, ignore_index=False)
#Stocker une liste de propriétés dans df
property_df = pd.DataFrame(columns=['account_number','account_id', 'property_name', 'property_id'])
#Obtenez la liste des propriétés cibles à partir du df du compte
for i in range(len(account_df)):
properties = service.management().webproperties().list(accountId=account_df['account_id'].iloc[i]).execute()
for property in properties.get('items', []):
property_array = np.array([[i, account_df['account_id'].iloc[i], property.get('name'), property.get('id')]])
df_property = pd.DataFrame(data=property_array,columns=property_df.columns)
property_df = property_df.append(df_property, ignore_index=False)
#Stocker la liste des vues dans df
view_df = pd.DataFrame(columns=['account_id', 'property_id', 'view_name', 'view_id'])
#Obtenir la liste des vues cibles à partir de la propriété df
for i in range(len(property_df)):
views = service.management().profiles().list(accountId=property_df['account_id'].iloc[i],
webPropertyId=property_df['property_id'].iloc[i] ).execute()
for view in views.get('items', []):
view_array = np.array([[property_df['account_id'].iloc[i], property_df['property_id'].iloc[i], view.get('name'), view.get('id')]])
df_view = pd.DataFrame(data=view_array,columns=view_df.columns)
view_df = view_df.append(df_view, ignore_index=False)
#Essayez de combiner la liste des comptes, la liste des propriétés et la liste des vues en un seul df
#Compte en raison de la commodité du traitement au moment de l'adhésion_Si vous êtes préoccupé par la position du nombre, modifiez l'ordre des colonnes.
ga_account_list = pd.merge(pd.merge(account_df, property_df, on='account_id', how='inner'), view_df, on=['account_id', 'property_id'], how='inner')
ga_account_list.to_csv('Nom du fichier csv à créer', encoding='utf_8_sig')
def main():
scope = 'https://www.googleapis.com/auth/analytics.readonly'
key_file_location = 'Fichier de clé JSON pour le compte de service émis'
service = get_service(
api_name='analytics',
api_version='v3',
scopes=[scope],
key_file_location=key_file_location)
get_account_propaty_view_info(service)
if __name__ == '__main__':
main()
Exemple de sortie courant Les identifiants des comptes ne sont pas bien organisés, j'ai donc un numéro de compte à la place.
account_name | account_id | account_number | property_name | property_id | view_name | view_id |
---|---|---|---|---|---|---|
A | 10 | 0 | property_1 | 100 | view_1 | 1000 |
A | 10 | 0 | property_1 | 100 | view_2 | 1001 |
A | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ |
A | 10 | 0 | property_2 | 101 | view_1 | 1100 |
A | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ | ・ ・ ・ |
B | 20 | 1 | property_1 | 200 | view_1 | 2000 |
Tout d'abord, nous prévoyons d'utiliser ce résultat pour trier les comptes et propriétés inutiles.
Sur cette base, je souhaite créer un groupe pour chaque département de l'entreprise. Actuellement, l'autorité de l'AG est accordée aux individus, mais il est possible d'accorder une autorité pour chaque groupe.
M. A, qui vient de rejoindre l'entreprise, est dans le département XX, donc l'image est qu'il devrait élever l'autorité de □□. Je veux viser un avenir automatisé d'une simple pression sur un bouton.
J'espère que cela sera utile pour ceux qui ont des problèmes similaires.
Recommended Posts