🏠 Home 

淘宝订单导出

支持淘宝订单导出到json格式数据


Install this script?
// ==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);
})();