WSProxy を介した高度な取得

より複雑な取得を実行できます。たとえば、取得要求で SOAP RetrieveOptions などの他のプロパティを設定できます。

  • 最初の 3 つのパラメーターは単純な取得のパラメーターと同じです。
  • 4 番目のパラメーターでは、要求の RetrieveOptions のプロパティを指定します。
  • 5 番目のパラメーターでは、要求に設定する残りのプロパティを指定します。このプロパティには、「QueryAllAccounts」、「RepeatLastResult」、「RepeatAllSinceLastBatch」が含まれます。

この例では、RetrieveOption プロパティの「BatchSize」は有効な値ではありません。これは単にプロパティの設定方法を示す例です。

1var prox = new Script.Util.WSProxy();
2var props = { QueryAllAccounts: true };
3var cols = ["Name","CustomerKey","CategoryID","IsSendable"];
4var filter = {
5    Property: "CategoryID",
6    SimpleOperator: "equals",
7    Value: 101367
8};
9var opts = {
10    BatchSize: 25
11};
12var data = prox.retrieve("DataExtension", cols, filter, opts, props);

取得のページネーション 

さらにページを取得するには、getNextBatch 関数を使用します。

  • 最初のパラメーターはオブジェクトタイプです。
  • 2 番目のパラメーターは、前の取得からの RequestID です。

この例では、アカウント内のすべてのメールをループ処理し、Name プロパティを書き込み、すべてのアイテムを出力した後、返された合計数を出力します。

1var prox = new Script.Util.WSProxy(),
2    objectType = "Email",
3    cols = ["Name"],
4    moreData = true,
5    reqID = null,
6    numItems = 0;
7
8while(moreData) {
9    moreData = false;
10    var data = reqID == null ?
11           prox.retrieve(objectType, cols) :
12           prox.getNextBatch(objectType, reqID);
13
14    if(data != null) {
15        moreData = data.HasMoreRows;
16        reqID = data.RequestID;
17        if(data && data.Results) {
18            for(var i=0; i< data.Results.length; i++) {
19                Platform.Response.Write(data.Results[i].Name);
20                numItems++;
21            }
22        }
23    }
24}
25Platform.Response.Write("<br />" + numItems + " total " + objectType);