THỦ THUẬT HAYWINDOWS

Cách xem tổng số tiền đã tiêu trên Shopee

Đây là hướng dẫn giúp bạn xem có thể kiểm tra chi tiết từng mặt hàng đã mua, số lượng, số tiền trên sàn Shopee

Bước 1: Đăng nhập vào Shopee.vn trên trình duyệt máy tính

Bước 2: Mở Console

  • Windows/Linux: Ctrl + Shift + J 
  • Mac: CMD + Option + J 

Bước 3: Dán mã bên dưới vào phần Console rồi Enter (đợi một lát để nhận kết quả)

Bước 4: Copy toàn bộ, đem về Google Sheet dán ra để dễ xem hơn

// Hàm async để lấy danh sách đơn hàng từ một trang web dựa trên offset và limit
async function getOrders(offset, limit) {
    // Xây dựng URL để gửi yêu cầu lấy danh sách đơn hàng
    let url = "https://shopee.vn/api/v4/order/get_all_order_and_checkout_list?limit=" + limit + "&offset=" + offset;
    // Gửi yêu cầu và chờ nhận dữ liệu dưới dạng JSON
    var ordersData = (await (await fetch(url)).json()).data.order_data;

    // Trích xuất danh sách chi tiết các đơn hàng từ dữ liệu nhận được
    var detailList = ordersData.details_list
    // Nếu có danh sách chi tiết, trả về nó; nếu không, trả về mảng trống
    if (detailList) {
        return detailList;
    } else {
        return [];
    }
}

// Hàm chuyển đổi số sang định dạng tiền tệ Việt Nam
function _VietNamCurrency(number) {
    return new Intl.NumberFormat('vi-VN', { style: 'currency', currency: 'VND' }).format(number);
}

// Hàm async để lấy tất cả các đơn hàng và tạo danh sách hiển thị
async function getAllOrders() {
    const limit = 20; // Số lượng đơn hàng tối đa trong mỗi yêu cầu
    let offset = 0; // Bắt đầu từ đơn hàng đầu tiên
    let allOrders = []; // Danh sách tất cả các đơn hàng

    // Thêm tiêu đề cột cho danh sách đơn hàng
    allOrders.push(
        '<tr>' +
        '<th>Tên chung</th>' +
        '<th>Số lượng</th>' +
        '<th>Tổng tiền</th>' +
        '<th>Trạng thái</th>' +
        '<th>Tên shop</th>' +
        '<th>Chi tiết</th>' +
        '<th>Tiền gốc</th>' +
        '</tr>'
    );

    let sum = 0; // Tổng tiền của tất cả các đơn hàng
    let count = 0; // Tổng số lượng sản phẩm trong tất cả các đơn hàng

    // Lặp lại cho đến khi không còn đơn hàng nào
    while (true) {
        // Lấy danh sách đơn hàng từ trang web dựa trên offset và limit
        let data = await getOrders(offset, limit);
        // Nếu không còn đơn hàng nào, thoát khỏi vòng lặp
        if (data.length == 0)
            break;

        // Duyệt qua từng đơn hàng
        for (const item of data) {
            const infoCard = item.info_card;
            const listType = item.list_type;
            let strListType;
            // Xác định trạng thái của đơn hàng dựa trên mã listType
            switch (listType) {
                case 3: strListType = "Hoàn thành"; break;
                case 4: strListType = "Đã hủy"; break;
                case 7: strListType = "Vận chuyển"; break;
                case 8: strListType = "Đang giao"; break;
                case 9: strListType = "Chờ thanh toán"; break;
                case 12: strListType = "Trả hàng"; break;
                default: strListType = "Không rõ"; break;
            }

            const productCount = infoCard.product_count;
            let subTotal = infoCard.subtotal / 1e5;
            count += productCount;
            const orderCard = infoCard.order_list_cards[0];
            const shopName = orderCard.shop_info.username + " - " + orderCard.shop_info.shop_name;
            const products = orderCard.product_info.item_groups;
            const productSumary = products.map(product => product.items.map(item => item.name + "--số lượng: " + item.amount + "--giá: " + _VietNamCurrency(item.item_price)).join(', ')).join('; ');
            const name = products[0].items[0].name;
            if (listType != 4 && listType != 12)
                sum += subTotal;
            else
                subTotal = 0;

            const subTotalNative = _VietNamCurrency(subTotal);

            // Thêm thông tin của đơn hàng vào danh sách tất cả các đơn hàng
            allOrders.push(
                '<tr>' +
                '<td>' + name + '</td>' +
                '<td>' + productCount + '</td>' +
                '<td>' + subTotalNative + '</td>' +
                '<td>' + strListType + '</td>' +
                '<td>' + shopName + '</td>' +
                '<td>' + productSumary + '</td>' +
                '<td>' + subTotal + '</td>' +
                '</tr>'
            );

        }
        console.log('Đã thu thập: ' + offset);
        offset += limit; // Tăng giá trị offset để lấy trang tiếp theo
    }

    console.log('==============================')
    console.log('%cTổng số sản phẩm: ' + count, 'color: green; font-size:20px; font-family: Comfortaa');
    console.log('%cTổng chi: ' + _VietNamCurrency(sum), 'color: red; font-size: 22px; font-family: Comfortaa');
    console.log('==============================')

    // Thêm thông tin tổng cộng của tất cả các đơn hàng vào danh sách
    allOrders.push(
        '<tr>' +
        '<tr><td>Tổng cộng:</td><td>' + count + '</td><td>' + _VietNamCurrency(sum) + '</td><td colspan="4"></td></tr></table>'
    );

    // Ghép tất cả các dòng trong danh sách đơn hàng thành một chuỗi văn bản
    var tableHTML = '<table>' + allOrders.join('\r\n') + '</table>';

    // Hiển thị danh sách đơn hàng trong một bảng trên trang web
    document.body.innerHTML = tableHTML;

    // Thêm CSS để tùy chỉnh giao diện bảng
    var style = document.createElement('style');
    style.innerHTML = `
        body { 
            margin: 0; 
        }
        table { 
            font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; 
            border-collapse: collapse; 
            width: 100%; 
        } 
        table td, table th { 
            border: 1px solid #eee; 
            padding: 10px 20px; 
            max-width:200px;
        } 
        table tr:nth-child(even) {
            background-color: #f8f8f8;
        } 
        table th { 
            text-align: left; 
            background-color: #ee4d2d; 
            color: white; 
            position: sticky; 
            top: 0; 
        } 
        table tr:last-child { 
            position: sticky; 
            bottom: 0; 
            background: #ee4d2d; 
            font-weight: bold; 
            color: #fff; 
            text-align: left; 
            background-color: #ee4d2d; 
            color: white; 
        }
        table tr:last-child td, table th { 
            border-bottom: 0; 
        }
    `;
    document.head.appendChild(style);
}

// Gọi hàm để lấy và hiển thị tất cả các đơn hàng
getAllOrders();

Chia sẻ: Bùi Việt Anh

Có thể bạn chưa biết

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận