Video: Bài 18: Chạy JavaScript và Trợ lý Auto
Mở trên YouTube ↗💻 Chạy Javascript (javascript)
Nhóm palette: Mã code · type: javascript · cổng: Thành công (0) · Lỗi (1)
Mục đích
Parse chuỗi, JSON, tính toán; không điều khiển DOM Chrome. Không có Playwright built-in. Cần Node.js (node trên PATH). Timeout 10 giây. Không có npm install trong node.
Từng setting
| Ô trên Properties | Key | Mặc định | Ý nghĩa / cách dùng |
|---|---|---|---|
| Delay sau (ms) | delay_after_ms | 0 | Chờ thêm sau khi node chạy xong rồi mới sang node kế. Dùng để UI kịp hiện, ảnh kịp load. Không có ở node note, end, delay_random, start. |
| Mã Javascript (Node.js) | code | — | Chạy sau khi inject const excel_text = "..." (mọi biến hợp lệ) + const ctx = { vars: {...} };. {excel_text} trong code được thay lúc chạy (kéo từ thanh biến). Đừng khai const ctx / const excel_text lại. Trong template JS, {excel_text} không cần $. |
| Biến lưu kết quả (stdout) | variable | js_result | Mặc định js_result = stdout đã trim. |
Ví dụ thực tế
- A. Tách Excel user|pass
Gõconst p = String(excel_text || ctx.vars.excel_text || '').split('|'); console.log(p[0] || '');{js_result}là user; node JS thứ haiconsole.log(p[1])—excel_textvẫn còn. Cũng kéo{excel_text}vào mã (không cần$). - B. Parse vàng OCR
const t = String(ctx.vars.ocr_text || '').replace(/[^\d]/g, ''); console.log(t); - C. JSON HTTP
(Nếu HTTP đã copy key phẳnglet j = {}; try { j = JSON.parse(ctx.vars.http_response || '{}'); } catch (e) {} console.log(j.token || '');tokenvào vars thì dùng{token}luôn.)
Lưu ý
Kết quả chỉ lấy stdoutEngine ghi file tạm
.js, node temp, xóa file. returncode !== 0 → cổng Lỗi, stderr trong log. Exception (không có node, timeout) → Lỗi. console.log(x) mới vào biến. Gán ctx.vars.foo = 1 không ghi ngược Python trừ khi bạn console.log rồi node sau đọc js_result. ctx.vars là bản sao JSON lúc đầu node (kiểu JSON-able). Không gọi API Python. ctx trong user code trùng tên inject — đừng khai const ctx lại.require('fs')được (Node chuẩn) — cẩn thận path.- Không require package ngoài trừ khi user đã cài global.
- 10s: vòng lặp nặng → timeout cổng Lỗi.
Không có trên palette — http_serverHTTP Server (listener) — code
execute_http_server: mở port, đợi 1 request, lưu body/query. Không bán trên UI. Đừng ghi vào mục lục Tools như node kéo-thả. Không có trên palette.Thứ tự điển hình: acc Excel + báo Telegram
Start (file_excel)
→ Chọn App
→ Đọc Excel lookup_row hàng {app_title}
→ Javascript tách user/pass
→ Click + Gõ
→ OCR vàng
→ Ghi Excel write_cell cột B hàng {app_title}
→ Telegram message
→ End