Đâ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ách #xem #tổng #số #tiền #đã #tiêu #trên #Shopee

What's your reaction?

Excited
0
Happy
0
In Love
0
Not Sure
0
Silly
0

Leave a reply

Your email address will not be published. Required fields are marked *