Googleads python模块 - 如何创建类实例

时间:2016-08-25 16:20:24

标签: python google-dfp

我正在使用python 2.7和google dfp api python模块(googleads-4.4.0)。

发布者文档的双击(https://developers.google.com/doubleclick-publishers/docs/rel_notes)描述了像CustomTargetingValue这样的“类型”(也称为类)。我想创建这样的类的新实例,以便我可以填充它们并调用API可访问的方法,如createCustomTargetingValues()。

我希望通过使用类名和'call'方法创建新实例。

newVal = CustomTargetingValue()

...但这会产生NameError

NameError: name 'CustomTargetingValue' is not defined

我尝试过使用dir(),vars()和检查,但我找不到一种方法来确定名称,例如googleads.CustomTargetingValue,suds.sudsobject.CustomTargetingValue。

作为一种解决方法,我可以使用像getCustomTargetingValuesByStatement()这样的DFP查询来返回我想要的类型的现有对象,使用'type'来获取其类,然后使用调用方法

newVal=type(existingVal)()

我可以类似地使用复制模块来复制对象,但两种方式看起来都像黑客一样。

我显然在这里错过了一些令人眼花缭乱的东西 - 这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我找到的最接近的解决方案是简单地组成一个包含正确xsi_type的字典,并确保提供所有必填字段。然后,此词典将提供给正在进行的DFP API调用。我特别受到this code example的启发。

所以,例如我需要添加一个新的顶级KVP(CustomCriteriaSet),我使用这段代码:

new_kvp = {
    'xsi_type': 'CustomCriteriaSet',
    'logicalOperator': 'AND',
    'children': {
        'xsi_type': 'CustomCriteria',
        'keyId': key_id,
        'valueIds': [value1_id,value2_id],
        'operator': 'IS_NOT'
        }
    }
l.targeting['customTargeting'] = new_kvp
updated_li.append(l)
...
li_service.updateLineItems(updated_li)
...

虽然我在PHP示例here中找到,但代码只是调用CustomCriteriaSet调用,但我无法在Python示例中找到类似的代码。可能只是一个帮助类,但我还没有检查PHP示例。

嗯,无论如何,这个解决方案对我有用。所以我会选择这个。