SOAP & WSDL ( http://wiki.affiliatewindow.com/index.php/Affiliate_service_APIV3 )を介して(Googleスプレッドシートのスクリプト・エディタを介して)APIに接続しようとしています。
例 (上のリンクから) によると、「UserAuthentication」と「getQuota」の 2 つの要素を持つ必要があるヘッダー XML オブジェクトの作成に苦労しています。ユーザー認証のみでヘッダーを送信すると、応答でサーバーエラーが発生します。両方の要素を送信しようとすると、認証エラーが発生します。
どんな助けでも大歓迎です!
** 更新 ** 認証ヘッダーは機能しているようです (または、少なくともエラーを返していません)。私が今得ているエラーは、「Procedure 'getTransactionList' not present」です(存在するはずです)。
これまでの私のコードは次のとおりです。
function testSOAP() {
// Affiliate Window API from here
var wsdl = SoapService.wsdl("http://api.affiliatewindow.com/v3/AffiliateService?wsdl");
var apiService = wsdl.getService( wsdl.getServiceNames() );
//Logger.log(apiService); // ApiService
var headerA = [
"ns1:UserAuthentication",
{ "SOAP-ENV:mustUnderstand" : "true" },
{ "SOAP-ENV:actor" : "http://api.affiliatewindow.com" },
[ "ns1:iId", "******" ],
[ "ns1:sPassword", "**************************************" ],
[ "ns1:sType", "affiliate" ]
];
var headerQ = [
"ns1:getQuota", "true"
];
var paramJ = [
"ns1:getTransactionList",
[ "ns1:dStartDate", "2011-08-01T00:00:00" ],
[ "ns1:dEndDate", "2011-08-30T23:59:59" ],
[ "ns1:sDateType", "transaction" ]
];
// I read that the paramaters should be sent as an XML element, not JSON (as above)
// but neither of the formats seem to work
var paramX = Xml.element("ns1:getTransactionList", [
Xml.element("ns1:dStartDate", ["2011-08-01T00:00:00"]),
Xml.element("ns1:dEndDate", ["2011-08-30T23:59:59"]),
Xml.element("ns1:sDateType", ["transaction"])
]);
// this returns the generated xml that will be sent
var result = apiService.getSoapEnvelope("getTransactionList", paramX, [headerA, headerQ]);
Logger.log(result);
var transL = apiService.getOperation("getTransactionList");
//Logger.log(transL);
var env = transL.invokeOperation([paramJ], [headerA, headerQ]);
Logger.log(env);
Logger.getLog();
}