-3

I am trying to get a tracking status request to work but when I run this code I get an error:

function checkTrackingStatus(trackingNumber, repName, sampleRequestName) {
  const xml_req = `
    <TrackRequest xmlns='http://fedex.com/ws/track/v3'>
      <WebAuthenticationDetail>
        <UserCredential>
          <Key>MY_API_KEY</Key>
          <Password>MY_SECRET_KEY</Password>
        </UserCredential>
      </WebAuthenticationDetail>
      <ClientDetail>
        <AccountNumber>MY_ACCOUNT_NUMBER</AccountNumber>
      </ClientDetail>
      <TransactionDetail>
        <CustomerTransactionId>ActiveShipping</CustomerTransactionId>
      </TransactionDetail>
      <Version>
        <ServiceId>trck</ServiceId>
        <Major>3</Major>
        <Intermediate>0</Intermediate>
        <Minor>0</Minor>
      </Version>
      <PackageIdentifier>
        <Value>${trackingNumber}</Value>
        <Type>TRACKING_NUMBER_OR_DOORTAG</Type>
      </PackageIdentifier>
      <IncludeDetailedScans>1</IncludeDetailedScans>
    </TrackRequest>`;

  const path = "https://wsbeta.fedex.com:443/xml";

  var response = UrlFetchApp.fetch(path, {
    method: 'POST',
    payload: xml_req,
    contentType: 'text/xml',
  });

  var responseText = response.getContentText();
  var xmlDoc = XmlService.parse(responseText);
  var statusNode = xmlDoc.getRootElement().getChild('CompletedStatus').getChild('Status');

  // Check the status and send an email if delivered
  if (statusNode.getValue() === "Delivered") {
    var repEmail = getRepEmail(repName);

    if (repEmail) {
      var subject = "Sample Request Delivered Notification";
      var message = "Hi " + repName + ",\n\n" +
        "The sample request for " + sampleRequestName + " has been delivered.\n\n" +
        "Best regards,\n" +
        "Your Google Apps Script";

      GmailApp.sendEmail(repEmail, subject, message);
    }
  }
}

Here is the error I get:

Error
TypeError: Cannot read properties of null (reading 'getChild')

FEDEX API Documentation doesnt make sense to me, can someone guide me so I can learn on my own a better understanding of how to communicate with FEDEX API?

Sal
  • 1
  • 1

0 Answers0