kiến thức [Excel VBA] Lấy dữ liệu từ trang web bất kỳ

  • Người tạo chủ đề Người tạo chủ đề NguyenDang95
  • Ngày bắt đầu Ngày bắt đầu
Mình không rành về Google Apps Script lắm, nhưng khi thử tìm hiểu và viết code thì khả năng làm được là có nhé thím.
Vd: Lấy nội dung phần thân của 10 mail đầu tiên:
JavaScript:
function GetFirstTenMails() {
  const inbox = GmailApp.getInboxThreads();
  for (let i = 0; i < inbox.length; i++) {
    //Đọc 10 mail đầu tiên
    if (i == 10) {
      break;
    }
    const messages = inbox[i].getMessages();
    for (let i = 0; i < messages.length; i++) {
      const message = messages[i];
      Logger.log(message.getPlainBody())
    }
  }
}
Cảm ơn bác nhiều nhé.
hôm mình test thì bên google cung cấp API để viết lên sheet, đọc mail (mình đã test với python oke rồi). Thấy gg cũng cung cấp API cho cả js nên mình muốn hỏi bác thêm.
Mình không biết code js nên hỏi bác nếu js xài được thì mình học code.
JS thì được cái có app scripts dễ quản lý với không cần thuê vps.
Cảm ơn bác nhiều nhé.
 
Cảm ơn bác nhiều nhé.
hôm mình test thì bên google cung cấp API để viết lên sheet, đọc mail (mình đã test với python oke rồi). Thấy gg cũng cung cấp API cho cả js nên mình muốn hỏi bác thêm.
Mình không biết code js nên hỏi bác nếu js xài được thì mình học code.
JS thì được cái có app scripts dễ quản lý với không cần thuê vps.
Cảm ơn bác nhiều nhé.
Mình thấy Apps Script của Google dễ dùng mà, rất tiếc là mình rất ít khi đụng đến nó nên chẳng có mấy kinh nghiệm về mô hình đối tượng của nó.
 
Mình thấy Apps Script của Google dễ dùng mà, rất tiếc là mình rất ít khi đụng đến nó nên chẳng có mấy kinh nghiệm về mô hình đối tượng của nó.
Trước mình treo botlike trên đó thấy có schedule các thứ, không tốn tiền server nên mới xem thím.
Trước giờ mình chỉ làm data bằng python chứ ko đụng tới js nên phải biết js nữa mới dễ xài.
 
Trước mình treo botlike trên đó thấy có schedule các thứ, không tốn tiền server nên mới xem thím.
Trước giờ mình chỉ làm data bằng python chứ ko đụng tới js nên phải biết js nữa mới dễ xài.
Nói về vấn đề server, tháng trước mình có mua một con android tv box cài armbian để chạy một số script Python linh tinh với một số chương trình C#.NET dạng console nhẹ nhàng biên dịch sang arm64, để chạy 24/7 khá mát mẻ mà tiết kiệm điện, điểm yếu là hiệu năng rất kém so với máy tính bàn thông thường. Nói chung là nhu cầu của mình không cần hiệu năng quá cao nên giải pháp tạm bợ này cũng ổn.
 
Sửa lần cuối:
Nói về vấn đề server, tháng trước mình có mua một con android tv box cài armbian để chạy một số script Python linh tinh với một số chương trình C#.NET dạng console nhẹ nhàng biên dịch sang arm64, để chạy 24/7 khá mát mẻ mà tiết kiệm điện điện, điểm yếu là hiệu năng rất kém so với máy tính bàn thông thường. Nói chung là nhu cầu của mình không cần hiệu năng quá cao nên giải pháp tạm bợ này cũng ổn.
như của bác cũng giống raspberry pi nhỉ.
e cũng không cần khỏe, chỉ treo mấy scipt dạng services.
Cảm ơn bác nhé, để em tham khảo.
 
như của bác cũng giống raspberry pi nhỉ.
e cũng không cần khỏe, chỉ treo mấy scipt dạng services.
Cảm ơn bác nhé, để em tham khảo.
Nói chung là đủ dùng mà vẫn đáp ứng nhu cầu, ví dụ như hình dưới của như bên mình viết script cào dữ liệu thời tiết, chỉ cần đưa lên con android tv box chạy armbian rồi cài đặt crontab để script tự động chạy là xong, dữ liệu được tự động đẩy lên máy chủ cơ sở dữ liệu mariadb.
1715747873285.png
 
Nói chung là đủ dùng mà vẫn đáp ứng nhu cầu, ví dụ như hình dưới của như bên mình viết script cào dữ liệu thời tiết, chỉ cần đưa lên con android tv box chạy armbian rồi cài đặt crontab để script tự động chạy là xong, dữ liệu được tự động đẩy lên máy chủ cơ sở dữ liệu mariadb.
Xem tệp đính kèm 2493864
con này cài armbian phức tạp không bác.
Bác cho e xin thêm mã box bác đang xài với.
này chỉ cần cài thêm cái vscode nữa là tunnel vào code ngon lành rồi
 
con này cài armbian phức tạp không bác.
Bác cho e xin thêm mã box bác đang xài với.
này chỉ cần cài thêm cái vscode nữa là tunnel vào code ngon lành rồi
Lúc mua box mình mua trúng con box fake nên cấu hình thọt lắm, mình khuyên thím nên tìm mua những con có SOC của Allwinner hoặc Rockchip, RAM tối thiểu 2GB để chạy phần mềm cho thoải mái.
Thím tham khảo bài viết này xem sao: Cài đặt AdguardHome trên tvbox chạy Armbian
 
Xin chào mọi người. Trong bài viết này mình xin giới thiệu đến mọi người cách thức lấy dữ liệu từ trang web bất kỳ. Trong Excel, người dùng có thể sử dụng công cụ có sẵn Power Query để lấy dữ liệu từ một trang web bất kỳ, dữ liệu trả về thông thường là HTML (ở dạng bảng), XML hoặc JSON. Tuy vậy người dùng lại không thể tinh chỉnh những loại dữ liệu nào muốn nhận hoặc chỉ muốn dữ liệu theo nhiều tiêu chí khác nhau (tham số truy vấn (query parameters) của URL hoặc Request Body), lúc này VBA sẽ là lựa chọn hoàn hảo.
Chúng ta xét một ví dụ thực tế dưới đây.
Ví dụ: Lấy dữ liệu chứng khoán theo danh mục từ trang web iboard.ssi.com.vn:
Giả sử người dùng muốn lấy dữ liệu từ trang web iboard.ssi.com với những danh mục như VN100,VN30,VNCONS:
Xem tệp đính kèm 1970426
Để tìm được nguồn cung cấp dữ liệu cho bảng trên, chúng ta thực hiện những bước sau:
  1. Từ trình duyệt web nhân Chromium bất kỳ (Edge, Chrome, Opera, v.v.), người dù nhấn phím F12 để mở Developer Tools
  2. Xem tệp đính kèm 1970430
  3. Tiếp theo, chọn tab Network - Fetch/XHR, từ đây người dùng có thể tìm được nguồn dữ liệu trên bắt nguồn từ API nào.
  4. Dựa vào thông tin của các tab Headers, Payload và Response, người dùng tiến hành viết macro VBA tạo yêu cầu HTTP (HTTP Request) và xử lý phản hồi (Response) nhận được để trình bày dữ liệu ra Excel
  5. Xem tệp đính kèm 1970442
Kết quả:
Xem tệp đính kèm 1970445
Người dùng có thể tìm thấy tệp Excel chứa macro VBA đính kèm theo bài viết này.

Cập nhật:
Alo các thím, tình hình là tệp Excel mẫu ở đầu bài viết không còn sử dụng được nữa do SSI đã thay đổi API, cho nên mình quyết định viết lại hoàn toàn dưới dạng VSTO add-in để mọi người có thể tiện sử dụng.
Xem tệp đính kèm 2490065
Xem tệp đính kèm 2490063
Không download được File đính kèm bác ơi, bác có thể gửi qua inbox giúp được không?
 
Đã cập nhật bài viết để bổ sung thêm một cách lấy dữ liệu theo thời gian thực thông qua hàm RTD của Excel.
 
Đã cập nhật bài viết để bổ sung thêm một cách lấy dữ liệu theo thời gian thực thông qua hàm RTD của Excel.
Chào bác, em yếu bên IT này nhưng cũng muốn tìm hiểu thêm để làm việc, nhờ bác giúp em tải bảng trên Cục QL Dược Cục Quản lý Dược - Bộ Y tế (https://dichvucong.dav.gov.vn/congbonguyenlieu/index) ; hồi còn ít em còn copy tay về được :):)giờ nhiều quá rồi em chạy không nổi
Em cũng nghiên cứu post của bác mà không có mấy trường hợp có nhiều trang như bên đây (1 phần do ngou quá ko hiểu :cry:.
Bác chiếu cố e con Script nha
1728291605729.png
 
Chào bác, em yếu bên IT này nhưng cũng muốn tìm hiểu thêm để làm việc, nhờ bác giúp em tải bảng trên Cục QL Dược Cục Quản lý Dược - Bộ Y tế (https://dichvucong.dav.gov.vn/congbonguyenlieu/index) ; hồi còn ít em còn copy tay về được :):)giờ nhiều quá rồi em chạy không nổi
Em cũng nghiên cứu post của bác mà không có mấy trường hợp có nhiều trang như bên đây (1 phần do ngou quá ko hiểu :cry:.
Bác chiếu cố e con Script nha
Xem tệp đính kèm 2720996
Gửi thím.
1728296497160.png
 

Tệp đính kèm

Thống kê chủ đề

Ngày tạo
NguyenDang95,
Người trả lời cuối
NguyenDang95,
Trả lời
232
Lượt xem
30.331
Quay lại
Lên đầu trang