Googleads python模块-如何创建类实例
我正在使用python 2.7和google dfp api python模块(googleads-4.4.0) doubleclick for publishers文档()描述了CustomTargetingValue之类的“类型”(也称为类)。我想创建此类类的新实例,以便填充它们并调用API可访问的方法,如createCustomTargetingValues() 我希望通过使用类名和“call”方法创建新实例Googleads python模块-如何创建类实例,python,google-dfp,Python,Google Dfp,我正在使用python 2.7和google dfp api python模块(googleads-4.4.0) doubleclick for publishers文档()描述了CustomTargetingValue之类的“类型”(也称为类)。我想创建此类类的新实例,以便填充它们并调用API可访问的方法,如createCustomTargetingValues() 我希望通过使用类名和“call”方法创建新实例 newVal = CustomTargetingValue() 。。。但这会产
newVal = CustomTargetingValue()
。。。但这会产生一个命名错误
NameError: name 'CustomTargetingValue' is not defined
我尝试过使用dir()、vars()和inspect进行深入研究,但找不到一种方法来限定名称,例如googleads.CustomTargetingValue、suds.sudsobject.CustomTargetingValue
作为一种解决方法,我可以使用类似getCustomTargetingValuesByStatement()的DFP查询来返回所需类型的现有对象,使用“type”获取其类,然后使用call方法
newVal=type(existingVal)()
我同样可以使用复制模块来复制对象,但这两种方式都像是黑客攻击
很明显,我在这里忽略了一些非常明显的东西——正确的方法是什么?我找到的最接近的解决方案就是用适当的
xsi_类型组成一个字典,并确保提供了所有必填字段。这个字典随后被提供给正在进行的DFPAPI调用
例如,我需要添加一个新的顶级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示例中发现,该代码只是调用了CustomCriteriaSet
call,但我在Python示例中找不到类似的代码。可能只是一个助手类,但我还没有检查PHP示例
不管怎样,这个解决方案对我有效。所以我就用这个。嗨,这个问题有什么解决办法吗?我有点像是用同一台自动取款机。不,令人惊讶的是不是!我发现我通常在处理从getXbyStatement调用中获得的对象,所以没关系。否则,我要么调用获取模板对象并更改值,要么根据代码示例从头构建一个模板对象。如果你发现更多,请告诉我!我想我会使用答案部分,因为我会在那里发布代码。让我来吧。我想——cmiiw——我找到了解决办法