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?