簡體   English   中英

Googleads python模塊 - 如何創建類實例

[英]Googleads python module - how to create class instances

我正在使用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)()

我可以類似地使用復制模塊來復制對象,但兩種方式看起來都像黑客。

我顯然在這里錯過了一些令人眼花繚亂的東西 - 這樣做的正確方法是什么?

我找到的最接近的解決方案是簡單地組成一個具有正確xsi_type的字典,並確保提供所有必填字段。 然后,此字典將提供給正在進行的DFP API調用。我特別啟發此代碼示例

所以,例如我需要添加一個新的頂級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調用,但我在Python示例中找不到相似的代碼。 可能只是一個幫助類,但我還沒有檢查PHP示例。

好吧,無論如何,這個解決方案對我有用。 所以我會繼續這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM