【问题标题】:ImportXML google sheet for shipment package trackingImportXML 谷歌表用于货物包裹跟踪
【发布时间】:2020-09-06 14:18:29
【问题描述】:

我想直接从谷歌表格跟踪每个 FEDEX、DHL 和 UPS 的货件状态。我正在使用 importxml 函数: =IMPORTXML("https://www.fedex.com/apps/fedextrack/?action=track&tracknumbers="&C2&"&locale=en_US&cntry_code=us","//h1/div[@class="redesignSnapshotTVC snapshotController_addr_label dest"]/标题")

但是它显示错误。 附上我的工作表链接:https://docs.google.com/spreadsheets/d/1E1L0rn9-H4MCutI1On2uHDkkPo1pdjRpv014YREGIdU/edit?usp=sharing

请说出最好的方法。我来自非技术背景。 非常感谢您的帮助!

【问题讨论】:

    标签: api google-sheets google-sheets-importxml


    【解决方案1】:

    常见问题。您正在尝试导入加载后生成的 html。这意味着我们必须寻找您想要的数据是如何生成的。

    数据来源

    在对该站点进行检查后,我发现它正在对 URL https://www.fedex.com/trackingCal/track 进行 XHR,并且它是通过带有长有效负载的 POST 进行的。响应采用 JSON 格式。值得注意的是,有scanEventList 条目。

    "scanEventList": [{
        "date": "2020-07-15",
        "time": "13:15:00",
        "gmtOffset": "-07:00",
        "status": "Delivery exception",
        "statusCD": "DE",
        "scanLocation": "SAN BERNARDINO, CA",
        "scanDetails": "Future delivery requested",
        "scanDetailsHtml": "",
        "rtrnShprTrkNbr": "",
        "statusExceptionCode": "17",
        "isClearanceDelay": false,
        "isDelivered": false,
        "isDelException": true,
        "isException": true
    },
    ...
    ]
    

    解决方案

    首先,从 GitHub 获取 ImportJSON 脚本,并将其添加到工作表的脚本中(工具 > 脚本编辑器)。这不是最神奇的事情,但它至少会给我们ImportJSONViaPost() 以获取我们想要的数据:

    =INDEX(ImportJSONViaPost("https://www.fedex.com/trackingCal/track","data=%7B%22TrackPackagesRequest%22%3A%7B%22appType%22%3A%22WTRK%22%2C%22appDeviceType%22%3A%22DESKTOP%22%2C%22supportHTML%22%3Atrue%2C%22supportCurrentLocation%22%3Atrue%2C%22uniqueKey%22%3A%22%22%2C%22processingParameters%22%3A%7B%7D%2C%22trackingInfoList%22%3A%5B%7B%22trackNumberInfo%22%3A%7B%22trackingNumber%22%3A%22"&A2&"%22%2C%22trackingQualifier%22%3A%22%22%2C%22trackingCarrier%22%3A%22%22%7D%7D%5D%7D%7D&action=trackpackages&locale=en_US&version=1&format=json",,"/TrackPackagesResponse/packageList/scanEventList,/TrackPackagesResponse/packageList/trackingCarrierDesc","noHeaders"),1)
    

    参数:

    1. 跟踪器的 URL
    2. POST 有效负载。单元格 A2 保存您的跟踪号。
    3. 留空
    4. 查询 - 让我们选择我们想要的数据。在此示例中,我选择选择运营商描述和整个 scanEventList 条目,但您也可以指定其中的特定元素。
    5. “noHeaders”仅表示数据。

    只需使用 JSON 导入,我们就会为 scanEventList 的每个元素提供一个条目,但第一个是最新的,因此,我们使用 INDEX 检索第一个条目,其中应该包含您需要的内容。

    有关 ImportJSON 包的更多帮助,请参阅here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      相关资源
      最近更新 更多