ExactTarget(Marketing Cloud)のpythonのSDKであるFuelSDK-Pythonを触ってみたのでメモっておきます。pythonのバージョンは2.7.xを使用してください。
インストールと設定
pipでインストールします。 ```python $ pip install FuelSDK ``` 次にAppCenterでAPI用のアプリケーションを作成して、ClientIDとClientSecretを取得します。アプリケーションの作成方法及びアプリケーションクレデンシャルの取得方法は過去記事を参照してください。 アプリケーションクレデンシャルの設定になりますが、以下の3つの設定方法があります。- 設定ファイルに予め書いておく方法
- コード上で明示的に設定する方法
- 環境変数で設定する方法
設定ファイルに予め書いておく方法
FuelSDK用のディレクトリ及び設定ファイルを作成します。 ```python $ mkdir ~/.fuelsdk $ vim ~/.fuelsdk/config.python ``` 設定ファイルには以下のURLに記載されている内容をコピペしてClientIDとClientSecretを取得した内容に書き換えてください。 https://github.com/salesforce-marketingcloud/FuelSDK-Python/blob/master/FuelSDK/config.python.template こんな感じになります↓ ```text [Web Services] appsignature: none clientid: {client_id} clientsecret: {client_secret} defaultwsdl: https://webservice.exacttarget.com/etframework.wsdl authenticationurl: https://auth.exacttargetapis.com/v1/requestToken?legacy=1 wsdl_file_local_loc: /tmp/ExactTargetWSDL.s6.xml ```コード上で明示的に設定する方法
FuelSDK.ET_Clientをインスタンス化するときに以下のようにパラメータを設定します。 ```python params = {} params['clientid'] = '{client_id}' params['clientsecret'] = '{client_secret}' client = FuelSDK.ET_Client(params=params) ```環境変数で設定する方法
herokuとかだとこの方法ですかね。 ```bash $ export FUELSDK_CLIENT_ID={client_id} $ export FUELSDK_CLIENT_SECRET={client_secret} ```DataExtensionのレコード抽出
import FuelSDK
import ET_Client
customer_key = '{Input your DataExtension CustomerKey}'
client = FuelSDK.ET_Client()
row = ET_Client.ET_DataExtension_Row()
row.auth_stub = client
row.CustomerKey = customer_key
row.props = ['field1', 'field2']
row.search_filter = {'Property' : 'field1', 'SimpleOperator' : 'equals', 'Value' : 'hoge'}
#row.search_filter = {'Property' : 'field1', 'SimpleOperator' : 'IN', 'Value' : ['hoge', 'fuga']}
response = row.get()
print(response.results)
ちなみにDataExtensionのdescribeはprops省略OKですが、レコード抽出はprops必須です。また、search_filterでオペレータにINを使う場合は配列を指定できますが、この配列は必ず2つ以上の要素を含むようにしてください。要素が1つだけの場合はequalsを使うようにしないとエラーになっちゃいます。
DataExtensionのdescribe
DataExtensionの全カラムを取得したいときのサンプルはこんな感じ。customer_key = '{Input your DataExtension CustomerKey}'
client = FuelSDK.ET_Client()
de_column = ET_Client.ET_DataExtension_Column()
de_column.auth_stub = client
de_column.props = ["Name", "CustomerKey"]
de_column.search_filter = {'Property' : 'DataExtension.CustomerKey','SimpleOperator' : 'equals','Value' : customer_key}
response = de_column.get()
print(response.results)
ropsのところは取得したいカラムの情報を入力することになりますが、省略すると各カラムの全パラメータを取得できます。
DataExtensionレコードの作成
customer_key = '{Input your DataExtension CustomerKey}'
client = FuelSDK.ET_Client()
row= ET_Client.ET_DataExtension_Row()
row.CustomerKey = customer_key
row.auth_stub = client
row.props = {
'field1' : 'hoge',
'field2' : 'fuga',
}
postResponse = row.post()
print(postResponse.results)
上記ではpropsに入れる属性値として単一のディクショナリをセットしていますが、リスト+ディクショナリの形で複数レコードを登録することも可能です。
Subscriberの抽出
client = FuelSDK.ET_Client()
getSub = ET_Client.ET_Subscriber()
getSub.auth_stub = client
response = getSub.get()
print(response.results)
全DataExtensionの取得
de = ET_Client.ET_DataExtension()
de.auth_stub = client
de.props = ["Name", "CustomerKey", "ObjectID"]
response = de.get()
print(response.results)
SOAPメッセージのデバッグしたいとき
ET_Clientのコンストラクタのパラメータでdebug=TrueをセットすればOK。client = FuelSDK.ET_Client(debug=True)