Получение переменной информации (поля для установки) из Google Tag Manager через клиент API Google - PullRequest
0 голосов
/ 16 апреля 2019

Из-за количества GTM-контейнеров, которые мне нужно просмотреть, я использую python для перебора всех контейнеров и получения всех тегов и переменных в кадре данных.Получение самой основной информации работает, однако наиболее важной частью является переменная информация, такая как «поля для установки» с информацией, такой как настройки anonymizeip и forceSSL.Тем не менее, я получаю их только в форме, где я не могу понять, как их можно использовать в кадре данных.

Моя лучшая попытка в приведенном ниже примере кода.По крайней мере, это дает мне поля для установки и их значения в строках ниже друг друга.

pathlist = 'the path of a certain workspace I use to test'
testdict = []
def testvariable(service):
    for i in pathlist:
        variables = service.accounts().containers().workspaces().variables().list(parent=i).execute()
        for variable in variables.get('variable', []):
            name = variable.get('name')
            accountid = variable.get('accountId')
            containerid = variable.get('containerId')
            for parameter in variable.get('parameter', []):
                key = parameter.get('key')
                value = parameter.get('value')
                lists = parameter.get('list')
                for map in parameter.get('list', []):
                    for l in map.get('map', []):
                        fn = l.get('value', [])
                        testdict.append({'accountId': accountid, 'containerId': containerid, 'variableName': name, 'Key': key, 'Value': value, 'List': fn})
    df = pd.DataFrame(testdict)
    print('Obtained all the variables')
    with pd.ExcelWriter('testvariable.xlsx') as writer:
        df.to_excel(writer, sheet_name='test')
    print('excel created')
    print(df)

Я ожидаю, что выходные данные получат поля для установки из переменной настроек, чтобы иметь столбец с полями для установки,и столбец с этим значением.Сейчас мне удалось получить их только в виде отдельных строк.

1 Ответ

0 голосов
/ 18 апреля 2019

Я ответил на свой вопрос по этому делу.Поскольку списки предоставляли более глубокие параметры, мне приходилось их циклически проходить по определенным позициям.Я добавил эту часть, чтобы пройтись по четным / неровным строкам и получил нужные мне результаты:

                for map in parameter.get('list', []):
                for l in map.get('map', [])[::2]:
                    field = l.get('value', [])
                for k in map.get('map', [])[1::2]:
                    set = k.get('value', [])
                testdict.append({'accountId': accountid, 'containerId': containerid, \
                                 'variableName': name, 'Key': key, 'Value': value, 'Field': field, 'Set': set})
        testdict.append({'accountId': accountid, 'containerId': containerid, \
                         'variableName': name, 'Key': key, 'Value': value})
...