【问题标题】:UPS Tracking On Google Sheet does not workGoogle Sheet 上的 UPS 跟踪不起作用
【发布时间】:2018-10-23 20:22:41
【问题描述】:

我使用以下公式获取 UPS 实时跟踪提要,直到昨天它都可以正常工作。我认为 UPS 已经更新了他们的网站,这个公式不再起作用了。有关如何从 UPS 获取跟踪更新的任何想法或建议?

=Index(IMPORTXML("https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums="&A1,"//*[@id='tt_spStatus']"),1)

现在我收到一个错误

导入的内容为空

感谢您的帮助和时间。

谢谢

【问题讨论】:

    标签: web-scraping import google-sheets shipping ups


    【解决方案1】:

    UPS 更新了此网页。它不再在初始页面响应中返回跟踪信息。它现在改为发出单独的 AJAX 请求以在页面加载后检索信息。

    改用此公式,并将 URL 更新到其网站上的不同页面,该页面在初始页面响应中返回跟踪信息:

    =Index(IMPORTXML("https://wwwapps.ups.com/tracking/tracking.cgi?tracknum="&A1,"//*[@id='tt_spStatus']"),1)
    

    【讨论】:

    • 嘿阿内尔,非常感谢您的帮助。这对我有用。
    • 这个方法好像不行了。是否有任何修改可以使这项工作?
    【解决方案2】:

    A1 有跟踪代码的交货时间和状态。

    =index(IMPORTXML("https://wwwapps.ups.com/tracking/tracking.cgi?tracknum="&A1,"//*[contains(@class,'ups-group')]"),2)

    【讨论】:

    • 这只会给我交货日期。如何获取当前状态,例如在运输中或已交付。谢谢
    【解决方案3】:

    带有一些额外细节的跟踪(其中 A1 是跟踪号):

    =iferror(
      IMPORTXML(
        "https://wwwapps.ups.com/tracking/tracking.cgi?tracknum="&$A1,"//*[@id='tt_spStatus']")&iferror(": "&substitute(index(index(IMPORTHTML("https://wwwapps.ups.com/tracking/tracking.cgi?tracknum="&$A1,"table"),2),1),",  United States",""),""
      ),
      "--"
    )
    

    准备发货的包裹结果:“订单已处理:UPS 准备就绪”

    在途包裹的结果:“取件:佐治亚州亚特兰大”

    【讨论】:

      【解决方案4】:

      这些在 2020 年都不适合我,但以下是有效的:

      在脚本编辑器中添加此功能:

      function IMPORTJSON(url,xpath){
      
        try{
          // /rates/EUR
          var res = UrlFetchApp.fetch(url);
          var content = res.getContentText();
          var json = JSON.parse(content);
      
          var patharray = xpath.split("/");
          //Logger.log(patharray);
      
          for(var i=0;i<patharray.length;i++){
            json = json[patharray[i]];
          }
      
          //Logger.log(typeof(json));
      
          if(typeof(json) === "undefined"){
            return "Node Not Available";
          } else if(typeof(json) === "object"){
            var tempArr = [];
      
            for(var obj in json){
              tempArr.push([obj,json[obj]]);
            }
            return tempArr;
          } else if(typeof(json) !== "object") {
            return json;
          }
        }
        catch(err){
            return "Error getting data";  
        }
      
      }
      

      此公式将在您的单元格中输出过境状态:

      =IMPORTJSON(join("","http://shipit-api.herokuapp.com/api/carriers/ups/",A1),"activities/0/details")
      

      我不需要其他详细信息,所以如果其他用户需要更多信息,我会创建另一个单元格,其中包含指向 ups 跟踪页面的链接:

      =HYPERLINK("https://www.ups.com/track?loc=en_US&tracknum="&A1&"&requester=WT/trackdetails)")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-22
        • 2017-09-25
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        • 1970-01-01
        • 2023-03-06
        相关资源
        最近更新 更多