支持淘宝订单导出到json格式数据
// ==UserScript== // @name 淘宝订单导出 // @namespace thebszk_taobao_order_export // @version 2024-06-01 // @description 支持淘宝订单导出到json格式数据 // @author thebszk // @match https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm* // @icon https://img.alicdn.com/favicon.ico // @grant none // @license GPL // ==/UserScript== (function () { "use strict"; let mainDiv = document.getElementById("J_bought_main"); if (!mainDiv) { console.log("未找到订单列表"); return; } let orderContainers; function order_flsuh() { orderContainers = mainDiv.getElementsByClassName("js-order-container"); if (!orderContainers) { console.log("未找到订单"); return; } const lable = '<label><input type="checkbox"> 导出</label>'; for (let i = 0; i < orderContainers.length; i++) { if (!orderContainers[i].querySelector("div > table > tbody:nth-child(2) > tr > td[colspan='3'] > label")) { orderContainers[i].querySelector("div > table > tbody:nth-child(2) > tr > td[colspan='3']").insertAdjacentHTML("afterbegin", lable); } } } let btn_contorl = document.querySelector("#tp-bought-root > div.js-actions-row-top > div:nth-child(2) > div"); // 为每个按钮添加点击事件 const buttons = document.querySelectorAll("button"); buttons.forEach(function (button) { button.addEventListener("click", function () { setTimeout(order_flsuh, 3000); }); }); let export_btn = document.createElement("button"); export_btn.innerText = "导出数据"; export_btn.className = "button-mod__button___2HDif button-mod__default___2pRKd button-mod__small___1a8rc"; order_flsuh(); export_btn.addEventListener("click", function () { //导出勾选的订单 let orderData = {}; orderData.order = []; let x = 0; for (let i = 0; i < orderContainers.length; i++) { if (orderContainers[i].querySelector("div > table > tbody:nth-child(2) > tr > td[colspan='3'] > label > input[type=checkbox]").checked) { orderData.order[x] = {}; orderData.order[x].id = orderContainers[i].children[0].getAttribute("data-id"); let table = orderContainers[i].getElementsByTagName("table")[0]; if (table) { let tbodies = table.getElementsByTagName("tbody"); if (tbodies.length >= 2) { orderData.order[x].date = tbodies[0].getElementsByTagName("tr")[0].children[0].children[0].innerText; orderData.order[x].price = parseFloat(tbodies[1].querySelector("tr:nth-child(1) > td:nth-child(5) > div > div > p > strong > span:nth-child(2)").innerText); orderData.order[x].state = tbodies[1].querySelector("tr:nth-child(1) > td:nth-child(6) > div > p > span").innerText; orderData.order[x].items = []; let items = tbodies[1].getElementsByTagName("tr"); let y = 0; for (let j = 0; j < items.length; j++) { let tds = items[j].getElementsByTagName("td"); if (tds[2].querySelector("div > p")) { //有数量,说明不是"保险服务"之类的 orderData.order[x].items[y] = {}; let ps = tds[0].getElementsByTagName("p"); //物品名称 orderData.order[x].items[y].name = ps[0].querySelector("a:nth-child(1) > span:nth-child(2)").innerText; //判断是否有分类 let elem_class = ps[1].querySelector("span > span:nth-child(1)"); if (elem_class && elem_class.innerText == "颜色分类") { orderData.order[x].items[y].class = ps[1].querySelector("span > span:nth-child(3)").innerText; } //价格 orderData.order[x].items[y].price = parseFloat(tds[1].querySelector("div > p > span:nth-child(2)").innerText); //数量 orderData.order[x].items[y].quantity = parseInt(tds[2].querySelector("div > p").innerText); y++; } } } } x++; } } if (x > 0) { navigator.clipboard .writeText(JSON.stringify(orderData)) .then(() => { alert("数据已复制到剪贴板"); }) .catch((err) => { alert("导出失败: " + err); }); } else { alert("没有订单被选中"); } }); btn_contorl.appendChild(export_btn); })();