0

由于我需要查看大量 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)

我希望输出从设置变量中获取要设置的字段,以具有要设置的字段的列和具有该值的列。现在我只设法将它们作为单独的行。

4

1 回答 1

0

我为这个案例回答了我自己的问题。因为列表在参数中提供了更深层次的参数,所以我不得不在某些位置循环遍历它们。我添加了这部分来遍历偶数/不偶数行并得到我需要的结果:

                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})
于 2019-04-18T09:20:32.857 回答