2015-03-28 5 views
0

Я пытаюсь извлечь данные из ИБП для отслеживания в электронную таблицу. Сторона signedforbyname XML-канала иногда присутствует, а иногда нет. Когда его нет, возникает проблема: TypeError: Невозможно прочитать свойство «Текст» из неопределенного. (строка 60, файл «Код») Если я прокомментирую строку 60, которая ищет имя signedforbyname, я в порядке после того, как я также вытащил переменную из строки, которая должна быть сгенерирована.google листы проблемы с xml

Я не очень хорошо знаком с javascript, поэтому я, вероятно, просто делаю глупое синтаксическое действие, что было бы здорово. Я все для легкого ответа. Если бы кто-то мог указать мне в правильном направлении с этим снипп, я был бы признателен.

Я понял, что если тогда проверить, будет ли это значение, то это будет работать, но, похоже, не работает, поскольку одна и та же ошибка возникает в том же месте с или без if/then (даже если я испортил синтаксис).

код, который я промазал на:

catch(err) { 
if (jsonText.TrackResponse.Shipment.Package.Activity.ActivityLocation.SignedForByName.Text !==null){ 
    var signedBy = jsonText.TrackResponse.Shipment.Package.Activity.ActivityLocation.SignedForByName.Text;} 
    else {var signedBy = "No Signature";} 
var dropLocation = jsonText.TrackResponse.Shipment.Package.Activity.ActivityLocation.Description.Text; 
var estDate = 'Signed By: '+signedBy+' @ '+dropLocation; 

XML из журнала:

[15-03-28 07:52:43:381 CST] Xml.parse([<?xml version="1.0"?> 
<TrackResponse><Response><ResponseStatusCode>1</ResponseStatusCode><ResponseStatusDescription>Success</ResponseStatusDescription></Response><Shipment><Shipper><ShipperNumber>xxxx</ShipperNumber><Address><AddressLine1>xxxxx</AddressLine1><City>TRACY</City><StateProvinceCode>CA</StateProvinceCode><PostalCode>95304 9370</PostalCode><CountryCode>US</CountryCode></Address></Shipper><ShipTo><Address><City>ROUNDUP</City><StateProvinceCode>MT</StateProvinceCode><PostalCode>59072</PostalCode><CountryCode>US</CountryCode></Address></ShipTo><ShipmentWeight><UnitOfMeasurement><Code>LBS</Code></UnitOfMeasurement><Weight>4.90</Weight></ShipmentWeight><Service><Code>003</Code><Description>GROUND</Description></Service><ReferenceNumber><Code>01</Code><Value>xxxxxxxx</Value></ReferenceNumber><ShipmentIdentificationNumber>1ZA85Y090310073852</ShipmentIdentificationNumber><PickupDate>20150318</PickupDate><DeliveryDateUnavailable><Type>Scheduled Delivery</Type><Description>Scheduled Delivery Date is not currently available, please try back later</Description></DeliveryDateUnavailable><Package><TrackingNumber>1ZA85Y090310073852</TrackingNumber><Activity><ActivityLocation><Address><City>ROUNDUP</City><StateProvinceCode>MT</StateProvinceCode><PostalCode>59072</PostalCode><CountryCode>US</CountryCode></Address><Code>MP</Code><Description>GARAGE</Description></ActivityLocation><Status><StatusType><Code>D</Code><Description>DELIVERED</Description></StatusType><StatusCode><Code>FS</Code></StatusCode></Status><Date>20150323</Date><Time>131200</Time></Activity><PackageWeight><UnitOfMeasurement><Code>LBS</Code></UnitOfMeasurement><Weight>4.90</Weight></PackageWeight><ReferenceNumber><Code>01</Code><Value>FN1-2514196-2965923</Value></ReferenceNumber><ReferenceNumber><Code>01</Code><Value>D3M0KFD7K</Value></ReferenceNumber><ReferenceNumber><Code>01</Code><Value>NA</Value></ReferenceNumber><ReferenceNumber><Code>01</Code><Value>UPS-CAOAK-T00441361L UPS842508 UP</Value></ReferenceNumber></Package></Shipment></TrackResponse>, true]) [0.067 seconds] 
[15-03-28 07:52:43:450 CST] Logger.log([{TrackResponse={Response={ResponseStatusCode={Text=1}, ResponseStatusDescription={Text=Success}}, Shipment={ShipmentIdentificationNumber={Text=1ZA85Y090310073852}, Service={Description={Text=GROUND}, code={Text=003}}, ReferenceNumber={Value={Text=129821607}, code={Text=01}}, Shipper={address={PostalCode={Text=95304 9370}, StateProvinceCode={Text=CA}, CountryCode={Text=US}, AddressLine1={Text=xxxxx}, City={Text=TRACY}}, ShipperNumber={Text=xxxx}}, Package={Activity={Status={StatusCode={code={Text=FS}}, StatusType={Description={Text=DELIVERED}, code={Text=D}}}, Time={Text=131200}, Date={Text=20150323}, ActivityLocation={Description={Text=GARAGE}, address={PostalCode={Text=59072}, StateProvinceCode={Text=MT}, CountryCode={Text=US}, City={Text=ROUNDUP}}, code={Text=MP}}}, ReferenceNumber=[{Value={Text=FN1-2514196-2965923}, code={Text=01}}, {Value={Text=D3M0KFD7K}, code={Text=01}}, {Value={Text=NA}, code={Text=01}}, {Value={Text=UPS-CAOAK-T00441361L UPS842508 UP}, code={Text=01}}], TrackingNumber={Text=1ZA85Y090310073852}, PackageWeight={UnitOfMeasurement={code={Text=LBS}}, Weight={Text=4.90}}}, ShipmentWeight={UnitOfMeasurement={code={Text=LBS}}, Weight={Text=4.90}}, DeliveryDateUnavailable={Description={Text=Scheduled Delivery Date is not currently available, please try back later}, Type={Text=Scheduled Delivery}}, PickupDate={Text=20150318}, ShipTo={address={PostalCode={Text=59072}, StateProvinceCode={Text=MT}, CountryCode={Text=US}, City={Text=ROUNDUP}}}}}}, []]) [0.001 seconds] 
[15-03-28 07:52:43:451 CST] Logger.log([1, []]) [0 seconds] 
[15-03-28 07:52:43:523 CST] Execution failed: TypeError: Cannot read property "Text" from undefined. (line 60, file "Code") [0.551 seconds total runtime] 

ответ

2

Edit: попробуйте проверить на состояние всего SignedForByName:

if (jsonText.TrackResponse.Shipment.Package.Activity.ActivityLocation.SignedForByName) { ... } 

Затем установите ваша переменная до ...SignedForByName.Text, если SignedForByName существует.

Проверка вашего объекта JSON, я воспроизвел ваше сообщение об ошибке при поиске SignedForName.Text, но при попытке доступа к SignedForByName получил undefined.

+0

Я пробовал редактировать его до того, что вы предложили, и получил ту же ошибку. То же самое с! == undefined. Любые другие идеи, что я могу здесь сделать? TypeError: Невозможно прочитать свойство «Текст» из неопределенного. (строка 60, файл «Код») Dismiss – Rodger

+0

Хм, я попробую, но вы уверены, что попадаете в блок 'catch'? Может быть, есть больше контекста в вопросе? – Gerald

+0

well line 60 - это строка в блоке catch, и если я удаляю материал if/then и просто комментирую это, он проходит и обрабатывает просто отлично ... если нет подписи, и в этом случае она пропускает ее с тех пор это прокомментировано ... Я не уверен, какой контекст вы ищете. В основном я стараюсь иметь дело с неопределенным значением, когда его там нет. Код не нравится и генерирует ошибку, и я не могу написать код, чтобы справиться с этим. Я не знаю, почему это вообще происходит. Я больше ничего не вижу с ошибкой. – Rodger

Смежные вопросы