2016-03-09

FuelSDK-NodeとExactTarget APIあれこれ

ExactTargetのNode.js用SDKであるFuelSDK-NodeとExactTarget APIに関する備忘録

FuelSDK-Nodeの使用例について

RubyやPythonのSDKにはSDKのリポジトリに使用例が置いてありますが、FuelSDK-NodeはFuelSDK-Node-AuthFuelSDK-Node-SOAPFuelSDK-Node-RESTの3要素で成り立っている上にそれぞれの利用例は全てnode-sdk-backbone-appのroutesディレクトリ内に置かれています。

※ちなみにcodeを表示するのではなく実行するモードでnode-sdk-backbone-appを実行しても、実行されずコードが表示され続ける不具合があります。これに関してはforkしたリポジトリの方で修正済みなので良ければお使いください。↓ tzmfreedom/node-sdk-backbone-app

ExactTargetのAPIで取得する方法に関して

APIで抽出できる各オブジェクトのフィールドはdescribeメソッドによって取得可能です。

var ET_Client = require('fuelsdk-node');

var client = new ET_Client('{client_id}', '{client_secret}', '{stack}');
client.SoapClient.describe(
  'Subscriber',
  function(err, response) {
    var props = response.body.ObjectDefinition.Properties.filter(function(prop) {
      return prop.IsRetrievable === 'true';
    });
  }
);

ハマりどころとしては、IsRetrievableの値はブーリアンではなく、文字列の’true’, ‘false’になるので判別する場合は注意が必要。

Sendable DataExtensionにSubscriberKeyをマッピングする場合

Subscriber側のマッピングフィールドにSubscriberKeyをマッピングする場合は、SendableSubscriberField.Nameには”Subscriber Key”をセットする必要があります。

Sendable DataExtensionをRetrieveで抽出するとSendableSubscriberField.Nameには”_SubscriberKey”という文字列が入っていますが、これをそのまま利用するのはNG。

SOAPだとこんな感じ

<soap:Envelope ...>
<soap:Header>
    ...
</soap:Header>
<soap:Body>
  <CreateRequest xmlns="http://exacttarget.com/wsdl/partnerAPI">
    <Objects xsi:type="DataExtension">
      ...
      <SendableSubscriberField>
        <Name>Subscriber Key</Name>
      </SendableSubscriberField>
    </Objects>
  </CreateRequest>
</soap:Body>
</soap:Envelope>
このエントリーをはてなブックマークに追加