[exacttarget] Fuel-Node-SOAPを使ってexacttargetのAPIへアクセスしてみる

By |5月 31, 2015|enebular, exacttarget, Javascript, Node-RED, Node.js, |


※はじめに断っておきますが、今回の手順ではMarketing Cloud(exacttarget)のアカウントが必要になります。

Node-RED/enebularのexacttargetモジュールでも作ってみようかなとnode.jsでexacttargetのAPIへのアクセスが楽になるライブラリを探してたらFuel-Node-SOAPというものを見つけました。

直近で必要だったのがQueryDefinitionというObjectへの操作だったのでコレで試してみます(他にもたくさんリソースあります -> Object一覧

QueryDefinitionをdescribeするため以下を実行。

[html]
var FuelSoap = require(‘fuel-soap’);
var options = {
auth: {
clientId: <your client id>,
clientSecret: <your client secret>
},
soapEndpoint: ‘https://webservice.s7.exacttarget.com/Service.asmx’
};

var SoapClient = new FuelSoap(options);
SoapClient.describe(‘QueryDefinition’, function (err, response) {
if (err) { console.error(err); }
response.body.ObjectDefinition.Properties.forEach(function (property) {
console.log(property);
});
});
[/html]

まず、clientId, clientSecretですが、これは以前[radian6] Radian6 APIについてまとめてみたでも前提となっているApp Centerで取得します。

[radian6] Radian6 APIについてまとめてみたの手順通りアプリケーションを作成するのですが、その際に関連付けるexacttarget組織がリソース利用の対象組織となります。

clientId, clientSecretのみならずsoapEndpointとAPIコール制限などが以下のアプリ詳細画面に表示されているのでコレを使用します。

SOAP Envelopeを除いたレスポンスは以下のようになります。

[html]
{ PartnerKey: ”,
ObjectID: ”,
Name: ‘ObjectID’,
DataType: ‘String’,
IsUpdatable: ‘true’,
IsRetrievable: ‘true’,
IsRequired: ‘true’ }
{ PartnerKey: ”,
ObjectID: ”,
Name: ‘Client.ID’,
DataType: ‘Int32’,
IsUpdatable: ‘true’,
IsRetrievable: ‘true’,
IsRequired: ‘true’ }

[/html]

レスポンスで注意するところとしてレスポンスをJSONで扱いたい場合はresponse.bodyにアクセスするということです(responseだとXML)

それではretrieveメソッドでObjectデータを抽出してみます。

[html]
var FuelSoap = require(‘fuel-soap’);
var options = {
auth: {
clientId: <your client id>,
clientSecret: <your client secret>
},
soapEndpoint: ‘https://webservice.s7.exacttarget.com/Service.asmx’
};

SoapClient.retrieve(
‘QueryDefinition’,
[‘CustomerKey’, ‘QueryText’],
null,
function (err, response) {
if (err) { console.error(err); }
console.log(response.body);
}
);
[/html]

これでObjectデータが取得できるはずです(何もいじってない組織ならAccountとかでやった方が良いでしょうか)同様にcreate, update, deleteも行います。

このようにexacttargetに対するAPIはObjectに対してdescribe, retrieve, create, update, deleteメソッドで外部からデータを処理するシンプルなものになります。