2016-08-25 20 views
3

私はpython 2.7とgoogle dfp api pythonモジュール(googleads-4.4.0)を使用しています。Googleadsのpythonモジュール - クラスインスタンスの作成方法

パブリッシャーのドキュメントのダブルクリック(https://developers.google.com/doubleclick-publishers/docs/rel_notes)には、CustomTargetingValueのような '種類'(別名クラス)が記載されています。そのようなクラスの新しいインスタンスを作成して、そのクラスにデータを設定し、createCustomTargetingValues()などのAPIでアクセス可能なメソッドを呼び出すことができます。

クラス名と 'call'メソッドを使用して新しいインスタンスを作成すると思います。

newVal = CustomTargetingValue() 

...しかし、これは私が(、)(DIRの周り掘りVARSしようとした)と検査が、私は修飾する働きAA方法を見つけることができませんでしたしましたNameError

NameError: name 'CustomTargetingValue' is not defined 

を生成し、名前、例えばgoogleads.CustomTargetingValue、suds.sudsobject.CustomTargetingValue。回避策として

、私は、私が望むタイプの既存のオブジェクトを返すクラスを取得するには「タイプ」を使用して、呼法

newVal=type(existingVal)() 
を使用する)getCustomTargetingValuesByStatement(のようなDFPのクエリを使用することができます

私は同様にオブジェクトを複製するためにコピーモジュールを使うことができますが、どちらの方法もハックのようです。

ここで私は明らかに何かを忘れてしまったのですが、これを行う正しい方法は何ですか?

+0

こんにちは、この問題の解決方法はありますか?私はちょっと同じ気がする。 – swdev

+1

いいえ、驚くほどではありません!私は通常、getXbyStatement呼び出しから取得するオブジェクトに取り組んでいるので、それは問題ありません。それ以外の場合は、テンプレートオブジェクトを取得して値を変更するか、コード例ごとにゼロからビルドするかのいずれかを呼び出します。あなたがそれ以上見つけたら教えてください! – theQuestingBeast

+0

Answerセクションを私がそこにコードを投稿するのに使うと思います。私にそれをさせてください。私は思う--cmiiw--私は解決策を見つけた – swdev

答えて

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の例をまだチェックしていません。

このソリューションは、とにかく私の仕事です。だから私はこれで行くだろう。