如何在 XML SOAP 请求中写入 SQL - salesforce marketing cloud API

How to write SQL inside XML SOAP request - salesforce marketing cloud API

我是 SOAP 新手。

我正在尝试获取发送对象信息并且我能够提取我需要的所有数据,除了

发送ID

这是我在邮递员中提出的请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <fueloauth>{{sf_ps_access_token}}</fueloauth>
    </soapenv:Header>
    <soapenv:Body>
        <RetrieveRequestMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
            <RetrieveRequest>
                <ObjectType>Send</ObjectType>
                <Properties>ID</Properties>
                <Properties>BCCEmail</Properties>
                <Properties>SendID</Properties>
                <Properties>Client.PartnerClientKey</Properties>
                <Properties>PartnerKey</Properties>
                <Properties>CreatedDate</Properties>
                <Properties>ModifiedDate</Properties>
                <Properties>Client.ID</Properties>
                <Properties>Email.ID</Properties>
                <Properties>Email.PartnerKey</Properties>
                <Properties>SendDate</Properties>
                <Properties>FromAddress</Properties>
                <Properties>FromName</Properties>
                <Properties>Duplicates</Properties>
                <Properties>InvalidAddresses</Properties>
                <Properties>HardBounces</Properties>
                <Properties>SoftBounces</Properties>
                <Properties>OtherBounces</Properties>
                <Properties>ForwardedEmails</Properties>
                <Properties>UniqueClicks</Properties>
                <Properties>UniqueOpens</Properties>
                <Properties>NumberSent</Properties>
                <Properties>NumberDelivered</Properties>
                <Properties>NumberTargeted</Properties>
                <Properties>NumberErrored</Properties>
                <Properties>NumberExcluded</Properties>
                <Properties>Unsubscribes</Properties>
                <Properties>MissingAddresses</Properties>
                <Properties>Subject</Properties>
                <Properties>PreviewURL</Properties>
                <Properties>SentDate</Properties>
                <Properties>EmailName</Properties>
                <Properties>Status</Properties>
                <Properties>EmailSendDefinition.ObjectID</Properties>
                <Properties>EmailSendDefinition.CustomerKey</Properties>
                <Properties>Client.PartnerClientKey</Properties>
                <Properties>Email.PartnerKey</Properties>
                <Filter xsi:type="ns1:SimpleFilterPart" xmlns:ns1="http://exacttarget.com/wsdl/partnerAPI">
                    <Property>CreatedDate</Property>
                    <SimpleOperator>between</SimpleOperator>
                    <DateValue>2018-01-01</DateValue>
                    <DateValue>2021-12-09</DateValue>
                </Filter>
            </RetrieveRequest>
        </RetrieveRequestMsg>
    </soapenv:Body>
</soapenv:Envelope>

这是我遇到的错误:

Error: Column 'dbo.tblJobs.SendID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

如何在 xml SOAP 请求中写入 SQL?

我对这个的回复晚了。我认为问题是,

在发送对象 (<ObjectType>Send</ObjectType>) 中没有作为 SendID 的字段。如果您需要 Job Id 以便连接其他跟踪,则需要使用“ID”属性。您可以使用 BatchId

进一步改进

SendID 出现在点击或打开等其他事件中。您可以在这些事件中使用 SendId 来过滤数据

获取发送信息的示例消息:

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Header>
        <a:Action s:mustUnderstand="1">Retrieve</a:Action>
        <a:To s:mustUnderstand="1">https://{{et_subdomain}}.soap.marketingcloudapis.com/Service.asmx</a:To>
        <fueloauth xmlns="http://exacttarget.com">{{AccessToken}}</fueloauth>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <RetrieveRequestMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
         <Options>
        </Options>
         <RetrieveRequest>
            <ObjectType>Send</ObjectType>
            <Properties>Client.ID</Properties>            
            <Properties>Email.ID</Properties>            
            <Properties>EmailName</Properties>
            <Properties>Subject</Properties>
            <Properties>SendDate</Properties>
            <Properties>CreatedDate</Properties>
            <Properties>Status</Properties>
            <Properties>FromAddress</Properties>
            <Properties>FromName</Properties>            
            <Properties>ID</Properties>
            <Properties>NumberSent</Properties>
            <Properties>NumberDelivered</Properties>
            <Properties>ForwardedEmails</Properties>
            <Properties>NumberErrored</Properties>
            <Properties>NumberExcluded</Properties>            
            <Properties>ExistingUndeliverables</Properties>
            <Properties>ExistingUnsubscribes</Properties>            
            <Properties>SoftBounces</Properties>
            <Properties>HardBounces</Properties>
            <Properties>OtherBounces</Properties>
            <Properties>Unsubscribes</Properties>
            <Properties>UniqueOpens</Properties>
            <Properties>UniqueClicks</Properties>            
            <Properties>PreviewURL</Properties>
            <Filter xsi:type="ns1:SimpleFilterPart" xmlns:ns1="http://exacttarget.com/wsdl/partnerAPI">
               <Property>ID</Property>
               <SimpleOperator>between</SimpleOperator>
               <Value>1</Value><Value>10000</Value>
            </Filter>
         </RetrieveRequest>
      </RetrieveRequestMsg>
    </s:Body>
</s:Envelope>

从上面获得 JobId(ID) 后,您可以使用它来获取其他跟踪信息。

使用作业 ID 获取所有相关的已发送跟踪:

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Header>
        <a:Action s:mustUnderstand="1">Retrieve</a:Action>
        <a:To s:mustUnderstand="1">https://{{et_subdomain}}.soap.marketingcloudapis.com/Service.asmx</a:To>
        <fueloauth xmlns="http://exacttarget.com">{{AccessToken}}</fueloauth>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <RetrieveRequestMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
         <Options>
        </Options>
         <RetrieveRequest>
            <ObjectType>SentEvent</ObjectType>
            <Properties>Client.ID</Properties>            
            <Properties>SubscriberKey</Properties>            
            <Properties>EventDate</Properties>
            <Properties>SendID</Properties>
            <Properties>BatchID</Properties>
            <Filter xsi:type="ns1:SimpleFilterPart" xmlns:ns1="http://exacttarget.com/wsdl/partnerAPI">
               <Property>SendID</Property>
               <SimpleOperator>between</SimpleOperator>
               <Value>1</Value><Value>9000</Value>
            </Filter>
         </RetrieveRequest>
      </RetrieveRequestMsg>
    </s:Body>
</s:Envelope>