Я понял, в чем проблема. Моя единственная реальная проблема заключалась в том, что у меня был неверный закрывающий тег XML. Это должно быть вместо . Вам также необходимо включить самозакрывающийся тег перед и после </ Zip5>. Если вы этого не сделаете, будет выдано сообщение об ошибке.
Однако я рад, что у меня возникла проблема, и разместил ее здесь, так что, надеюсь, это поможет другим в будущем получить код в значительной степени он понадобится вам для запроса валидации USPS от Google Apps Script. Я не нашел этого нигде. Вот окончательный код, затем я расскажу о том, как я работал с приведенным ниже результатом.
var userid = 'Enter the ID USPS Gave you when you signed up here';
var url = 'https://secure.shippingapis.com/ShippingAPI.dll';
var payload = {
"API": "Verify",
"XML" : "<AddressValidateRequest USERID=\"" + userid + "\"> \
<Revision>1</Revision> \
<Address ID=\"0\"> \
<Address1/> \
<Address2>" + address1 + "</Address2> \
<City>" + city1 + "</City> \
<State>" + state1 + "</State> \
<Zip5>" + zip1 + "</Zip5> \
<Zip4/> \
</Address> \
</AddressValidateRequest>"
};
var options = {
"method": "POST",
"payload": payload,
muteHttpExceptions: true
}
// Use a try & catch routine to catch any major errors.
try {
var response = UrlFetchApp.fetch(url, options);
}
catch (e) {
Logger.log(e);
continue; // If there is an error (i.e. the API service is not available), then skip the rest of the logic for this row.
}
var xmlReturn = response.getContentText();
Как только вы получите "xmlreturn" (как я это назвал выше) из выборки, вы Вам нужно будет проанализировать ответ XML, чтобы получить каждый фрагмент адреса, возвращаемый из USPS. Вот как я это сделал, используя регулярное выражение для Адресной строки 2. Вы делаете то же самое в значительной степени для других частей, просто слегка изменив свое регулярное выражение.
// *********************************
// Get Address Line 2
// *********************************
var uspsAddress2Reg = /(?<=<Address2>)[^]+(?=<\/Address2>)/g;
var uspsAddress2Arr =xmlReturn.match(uspsAddress2Reg);
// If we found the Address Line 2 in the following format: <Address2>1234 ANYSTREET DRIVE</Address2>
if (uspsAddress2Arr != null) {
var uspsAddress2 = uspsAddress2Arr[0];
} else {
var uspsAddress2 = ''; // If not found, set it to blank.
} // End If (uspsAddress2Arr != null)