2015-02-24 90 views
1

我正尝试使用我的Excel电子表格来跟踪我的UPS出货情况,以便使用交付时间戳进行更新。 我曾经使用的格式为: http://wwwapps.ups.com/WebTracking/processInputRequest?HTMLVersion=5.0&loc=en_US&Requester=UPSHome&tracknum=[TRK_ID]&AgreeToTermsAndConditions=yes&ignore=&track.x=25&track.y=16在Excel中进行UPS跟踪

其中[TRK_ID]将引用跟踪号码的单元格范围。 有了这个,我可以点击单元格中的链接,并将其带到带有跟踪信息的页面。

我不能使用该API,但只想报告传递时间戳。也许通过Power Query? 我可以使用Power Query调用网页,然后提取交付确认时间戳吗?

回答

0

您可以在单元格中构建一个超链接,该链接将转到HYPERLINK function的相关页面。例如,在A1跟踪号码:

=HYPERLINK("http://wwwapps.ups.com/WebTracking/processInputRequest?HTMLVersion=5.0&loc=en_US&Requester=UPSHome&tracknum="&A1&"&AgreeToTermsAndConditions=yes&ignore=&track.x=25&track.y=16", "UPS Tracking page") 

如果你想真正拉下信息,使用像XMLHttpRequest object东西很可能是行动的你最好的当然一个VBA解决方案。

1

它看起来并不有一个干净的UPS API给你交货时间戳记,但功率查询可以分析出来的HTML:

let 
    PackageDelivery = (tracknum as text) as text => let 
     WebText = Text.FromBinary(Web.Contents("http://wwwapps.ups.com/WebTracking/processInputRequest", [Query = [tracknum = tracknum]])), 
     FromDeliveredOn = Text.Range(WebText, Text.PositionOf(WebText, "Delivered On:")), 
     NextDD = Text.Range(FromDeliveredOn, Text.PositionOf(FromDeliveredOn, "<dd>") + 4, Text.PositionOf(FromDeliveredOn, "</dd>") - Text.PositionOf(FromDeliveredOn, "<dd>") - 4), 
     Cleaned = Text.Clean(Text.Replace(Text.Replace(NextDD, "&nbsp;", " "), "#(lf)", " ")) 
    in 
     Cleaned, 
    Invoked = PackageDelivery("1ZE1W7530369979412") //Replace with your tracking ID 
in 
    Invoked