Helu các bạn! Mình học theo tín chỉ cho nên lịch học không phải tuần nào cùng giống
nhau nên hôm nào cũng phải vào trang trường xem lịch (hơi mất chút thời gian và giao
diện không trực quan). Một cách nữa là viết lại thời khóa biểu (Mất nhiều thời gian mà có thể sai sót).
Các cách này không phù hợp với một thằng lười như mình và mình muốn dùng nhiều lần… Dựng API lấy thời khóa biểu
sau đó có thể viết chatbot nhắc lịch hay web/mobile xem lịch tùy ý nữa… Hừm .. Bắt đầu thôi.
Bước 0: Ý tưởng thực hiện
- Input: tài khoản, mật khẩu sử dụng trên trang trường.
- Lấy file thời khóa biểu.
- Phân tích file thời khóa biểu => dữ liệu (JSON).
Bước 1: Phân tích request
Password encrypted trước khi gửi lên!!
Password truyền lên đã mã hóa md5, có một số data khác
Chọn request login > Copy as cURL (bash). Mở Postman Chọn Import >
Paste raw text > Ấn nút import Ta được:
Gửi POST thử xem sao !
Vậy là lấy được cookie rồi ^^
Đến với phần lấy file, mình sẽ phân tích request lấy file như request trên và đây là kết quả:
Phần Headers
Phần response – file excel là đây chứ đâu ^^
Bước 2: Tiến hành code
Mình sử dụng express của NodeJS
Cấu trúc project
File login
Nhiệm vụ là lấy cookie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <span class="token keyword">let</span> <span class="token function-variable function">optionsGetCookies</span> <span class="token operator">=</span> <span class="token punctuation">(</span>username<span class="token punctuation">,</span>password<span class="token punctuation">,</span>form<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> form<span class="token punctuation">[</span><span class="token string">'__EVENTTARGET'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">''</span><span class="token punctuation">;</span> form<span class="token punctuation">[</span><span class="token string">'txtUserName'</span><span class="token punctuation">]</span> <span class="token operator">=</span> username<span class="token punctuation">;</span> form<span class="token punctuation">[</span><span class="token string">'txtPassword'</span><span class="token punctuation">]</span> <span class="token operator">=</span> password<span class="token punctuation">;</span> form<span class="token punctuation">[</span><span class="token string">'btnSubmit'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">'Đăng nhập'</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token punctuation">{</span> method <span class="token punctuation">:</span> <span class="token string">'POST'</span><span class="token punctuation">,</span> uri <span class="token punctuation">:</span> urlLogin<span class="token punctuation">,</span> simple<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> timeout<span class="token punctuation">:</span> <span class="token number">20000</span><span class="token punctuation">,</span> followRedirect<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> resolveWithFullResponse<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> form<span class="token punctuation">:</span>form<span class="token punctuation">,</span> headers<span class="token punctuation">:</span> <span class="token punctuation">{</span> <span class="token string">'Connection'</span> <span class="token punctuation">:</span> <span class="token string">'keep-alive'</span><span class="token punctuation">,</span> <span class="token string">'Cache-Control'</span> <span class="token punctuation">:</span> <span class="token string">'max-age=0'</span><span class="token punctuation">,</span> <span class="token string">'Origin'</span> <span class="token punctuation">:</span> urlOrigin<span class="token punctuation">,</span> <span class="token string">'Upgrade-Insecure-Requests'</span><span class="token punctuation">:</span><span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'Content-Type'</span> <span class="token punctuation">:</span> <span class="token string">'application/x-www-form-urlencoded'</span><span class="token punctuation">,</span> <span class="token string">'User-Agent'</span> <span class="token punctuation">:</span> <span class="token string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.18 Safari/537.36 Edg/75.0.139.4'</span><span class="token punctuation">,</span> <span class="token string">'Accept'</span> <span class="token punctuation">:</span> <span class="token string">'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'</span><span class="token punctuation">,</span> <span class="token string">'Referer'</span> <span class="token punctuation">:</span> urlLogin<span class="token punctuation">,</span> <span class="token string">'Accept-Encoding'</span> <span class="token punctuation">:</span> <span class="token string">'gzip, deflate'</span><span class="token punctuation">,</span> <span class="token string">'Accept-Language'</span> <span class="token punctuation">:</span> <span class="token string">'en-US,en;q=0.9'</span><span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token punctuation">(</span>username<span class="token punctuation">,</span>password<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token punctuation">(</span>resolve<span class="token punctuation">,</span>reject<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token function">getElements</span><span class="token punctuation">(</span>urlLogin<span class="token punctuation">,</span><span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> elements <span class="token operator">=</span> result<span class="token punctuation">.</span>elements<span class="token punctuation">;</span> <span class="token function">requestPromise</span><span class="token punctuation">(</span><span class="token function">optionsGetCookies</span><span class="token punctuation">(</span>username<span class="token punctuation">,</span>password<span class="token punctuation">,</span>elements<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span>_result<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'getCookies'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">true</span><span class="token punctuation">,</span> cookies<span class="token punctuation">:</span>_result<span class="token punctuation">.</span>headers<span class="token punctuation">[</span><span class="token string">'set-cookie'</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">catch</span><span class="token punctuation">(</span><span class="token punctuation">(</span>_error<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">reject</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'getCookies'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> error<span class="token punctuation">:</span>_error<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">catch</span><span class="token punctuation">(</span><span class="token punctuation">(</span>error<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">reject</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'getElements'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> error<span class="token punctuation">:</span>error<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
File get elements
Mục đích là lấy các element trong body.
Sử dụng cheerio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <span class="token keyword">let</span> <span class="token function-variable function">optionsGetElement</span> <span class="token operator">=</span> <span class="token punctuation">(</span>uri<span class="token punctuation">,</span>cookies<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token punctuation">{</span> method <span class="token punctuation">:</span> <span class="token string">'GET'</span><span class="token punctuation">,</span> uri <span class="token punctuation">:</span> uri<span class="token punctuation">,</span> followRedirect<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> headers<span class="token punctuation">:</span> <span class="token punctuation">{</span> <span class="token string">'Connection'</span> <span class="token punctuation">:</span> <span class="token string">'keep-alive'</span><span class="token punctuation">,</span> <span class="token string">'Cache-Control'</span> <span class="token punctuation">:</span> <span class="token string">'max-age=0'</span><span class="token punctuation">,</span> <span class="token string">'Origin'</span> <span class="token punctuation">:</span> urlOrigin<span class="token punctuation">,</span> <span class="token string">'Upgrade-Insecure-Requests'</span><span class="token punctuation">:</span><span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'Content-Type'</span> <span class="token punctuation">:</span> <span class="token string">'application/x-www-form-urlencoded'</span><span class="token punctuation">,</span> <span class="token string">'User-Agent'</span> <span class="token punctuation">:</span> <span class="token string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.18 Safari/537.36 Edg/75.0.139.4'</span><span class="token punctuation">,</span> <span class="token string">'Accept'</span> <span class="token punctuation">:</span> <span class="token string">'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'</span><span class="token punctuation">,</span> <span class="token string">'Referer'</span> <span class="token punctuation">:</span> urlLogin<span class="token punctuation">,</span> <span class="token string">'Accept-Encoding'</span> <span class="token punctuation">:</span> <span class="token string">'gzip, deflate'</span><span class="token punctuation">,</span> <span class="token string">'Accept-Language'</span> <span class="token punctuation">:</span> <span class="token string">'en-US,en;q=0.9'</span><span class="token punctuation">,</span> <span class="token string">'cookie'</span> <span class="token punctuation">:</span> <span class="token function">formatCookieListToString</span><span class="token punctuation">(</span>cookies<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token punctuation">(</span>uri<span class="token punctuation">,</span>cookies<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token punctuation">(</span>resolve<span class="token punctuation">,</span>reject<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token function">requestPromise</span><span class="token punctuation">(</span><span class="token function">optionsGetElement</span><span class="token punctuation">(</span>uri<span class="token punctuation">,</span>cookies<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span>response<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> $ <span class="token operator">=</span> cheerio<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span>response<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> hiddenInputList <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'input[type="hidden"]'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> elements <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>cookies <span class="token operator">!=</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">let</span> options <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'option[selected="selected"]'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> elements<span class="token punctuation">[</span><span class="token string">'PageHeader1$drpNgonNgu'</span><span class="token punctuation">]</span> <span class="token operator">=</span> options<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>value<span class="token punctuation">;</span> elements<span class="token punctuation">[</span><span class="token string">'drpSemester'</span><span class="token punctuation">]</span> <span class="token operator">=</span> options<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>value<span class="token punctuation">;</span> elements<span class="token punctuation">[</span><span class="token string">'drpTerm'</span><span class="token punctuation">]</span> <span class="token operator">=</span> options<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>value<span class="token punctuation">;</span> elements<span class="token punctuation">[</span><span class="token string">'drpType'</span><span class="token punctuation">]</span> <span class="token operator">=</span> options<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>value<span class="token punctuation">;</span> elements<span class="token punctuation">[</span><span class="token string">'btnView'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">'Xuất file Excel'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>hiddenInputList<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>hiddenInputList<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>value <span class="token operator">==</span> undefined<span class="token punctuation">)</span><span class="token punctuation">{</span> elements<span class="token punctuation">[</span>hiddenInputList<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">''</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token keyword">else</span><span class="token punctuation">{</span> elements<span class="token punctuation">[</span>hiddenInputList<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>name<span class="token punctuation">]</span> <span class="token operator">=</span> hiddenInputList<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>attribs<span class="token punctuation">.</span>value<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'getElements'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">true</span><span class="token punctuation">,</span>elements<span class="token punctuation">:</span>elements<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">catch</span><span class="token punctuation">(</span><span class="token punctuation">(</span>error<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">reject</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'getElements'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">false</span><span class="token punctuation">,</span>error<span class="token punctuation">:</span>error<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Lấy file excel thời khóa biểu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <span class="token keyword">let</span> <span class="token function-variable function">optionsGetFile</span> <span class="token operator">=</span> <span class="token punctuation">(</span>cookies<span class="token punctuation">,</span>form<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token punctuation">{</span> resolveWithFullResponse<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> method <span class="token punctuation">:</span> <span class="token string">'POST'</span><span class="token punctuation">,</span> encoding<span class="token punctuation">:</span> <span class="token keyword">null</span><span class="token punctuation">,</span> uri <span class="token punctuation">:</span> urlStudentTimeTable<span class="token punctuation">,</span> headers<span class="token punctuation">:</span> <span class="token punctuation">{</span> <span class="token string">'Connection'</span> <span class="token punctuation">:</span> <span class="token string">'keep-alive'</span><span class="token punctuation">,</span> <span class="token string">'Cache-Control'</span> <span class="token punctuation">:</span> <span class="token string">'max-age=0'</span><span class="token punctuation">,</span> <span class="token string">'Origin'</span> <span class="token punctuation">:</span> urlOrigin<span class="token punctuation">,</span> <span class="token string">'Upgrade-Insecure-Requests'</span> <span class="token punctuation">:</span> <span class="token string">'1'</span><span class="token punctuation">,</span> <span class="token string">'Content-Type'</span> <span class="token punctuation">:</span> <span class="token string">'application/x-www-form-urlencoded'</span><span class="token punctuation">,</span> <span class="token string">'User-Agent'</span> <span class="token punctuation">:</span> <span class="token string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'</span><span class="token punctuation">,</span> <span class="token string">'Accept'</span> <span class="token punctuation">:</span> <span class="token string">'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'</span><span class="token punctuation">,</span> <span class="token string">'Referer'</span> <span class="token punctuation">:</span> urlStudentTimeTable<span class="token punctuation">,</span> <span class="token string">'Accept-Encoding'</span> <span class="token punctuation">:</span> <span class="token string">'gzip, deflate'</span><span class="token punctuation">,</span> <span class="token string">'Accept-Language'</span> <span class="token punctuation">:</span> <span class="token string">'en-US,en;q=0.9,vi;q=0.8'</span><span class="token punctuation">,</span> <span class="token string">'cookie'</span> <span class="token punctuation">:</span> <span class="token function">formatCookieListToString</span><span class="token punctuation">(</span>cookies<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> form<span class="token punctuation">:</span>form <span class="token punctuation">}</span> <span class="token punctuation">}</span> module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token keyword">async</span><span class="token punctuation">(</span>username<span class="token punctuation">,</span>password<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token keyword">async</span><span class="token punctuation">(</span>resolve<span class="token punctuation">,</span>reject<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">await</span> <span class="token function">getCookies</span><span class="token punctuation">(</span>username<span class="token punctuation">,</span>password<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">async</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> cookies <span class="token operator">=</span> result<span class="token punctuation">.</span>cookies<span class="token punctuation">;</span> <span class="token keyword">await</span> <span class="token function">getElements</span><span class="token punctuation">(</span>urlStudentTimeTable<span class="token punctuation">,</span>cookies<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">async</span><span class="token punctuation">(</span>_result<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">await</span> <span class="token function">requestPromise</span><span class="token punctuation">(</span><span class="token function">optionsGetFile</span><span class="token punctuation">(</span>cookies<span class="token punctuation">,</span>_result<span class="token punctuation">.</span>elements<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">async</span><span class="token punctuation">(</span>__result<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> file <span class="token operator">=</span> <span class="token keyword">await</span> fs<span class="token punctuation">.</span><span class="token function">createWriteStream</span><span class="token punctuation">(</span>path<span class="token punctuation">.</span><span class="token function">resolve</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>__dirname<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">/files`</span></span><span class="token punctuation">,</span>`$<span class="token punctuation">{</span>username<span class="token punctuation">}</span><span class="token punctuation">.</span>xls`<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">await</span> file<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>__result<span class="token punctuation">.</span>body<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">await</span> file<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'getFile'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">true</span><span class="token punctuation">,</span>filename<span class="token punctuation">:</span>`$<span class="token punctuation">{</span>username<span class="token punctuation">}</span><span class="token punctuation">.</span>xls`<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">catch</span><span class="token punctuation">(</span><span class="token punctuation">(</span>__error<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>__error<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">catch</span><span class="token punctuation">(</span><span class="token punctuation">(</span>_error<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>_error<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">catch</span><span class="token punctuation">(</span><span class="token punctuation">(</span>error<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>error<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token function">reject</span><span class="token punctuation">(</span><span class="token string">'error'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Trích xuất dữ liệu từ file
Phân tích file và tiến hành code.
Sử dụng xlsx.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token punctuation">(</span>file<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token punctuation">(</span>resolve<span class="token punctuation">,</span>reject<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">try</span><span class="token punctuation">{</span> <span class="token keyword">let</span> schedule <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> <span class="token function-variable function">getAddressCell</span> <span class="token operator">=</span> <span class="token punctuation">(</span>str<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> r <span class="token operator">=</span> <span class="token regex">/d+/</span><span class="token punctuation">;</span> <span class="token keyword">let</span> row <span class="token operator">=</span> <span class="token function">parseInt</span><span class="token punctuation">(</span>str<span class="token punctuation">.</span><span class="token function">match</span><span class="token punctuation">(</span>r<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> col <span class="token operator">=</span> str<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span>row<span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token punctuation">{</span>row<span class="token punctuation">:</span>row<span class="token punctuation">,</span>col<span class="token punctuation">:</span>col<span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">let</span> <span class="token function-variable function">formatDateYMD</span><span class="token operator">=</span> <span class="token punctuation">(</span>str<span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> str <span class="token operator">=</span> str<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> day <span class="token operator">=</span> str<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> month <span class="token operator">=</span> str<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> year <span class="token operator">=</span> str<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>year<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">/</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>month<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">/</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>day<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">let</span> <span class="token function-variable function">formatDay</span> <span class="token operator">=</span> <span class="token punctuation">(</span>day<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">return</span> day <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">let</span> <span class="token function-variable function">findDatewithDay</span> <span class="token operator">=</span> <span class="token punctuation">(</span>start_date<span class="token punctuation">,</span>end_date<span class="token punctuation">,</span>day<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> dateList <span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> start_date<span class="token punctuation">;</span> i <span class="token operator"><</span> end_date<span class="token punctuation">;</span> i<span class="token operator">+=</span><span class="token number">60</span><span class="token operator">*</span><span class="token number">60</span><span class="token operator">*</span><span class="token number">24</span><span class="token operator">*</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">let</span> date_check <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">formatDay</span><span class="token punctuation">(</span>day<span class="token punctuation">)</span> <span class="token operator">==</span> date_check<span class="token punctuation">.</span><span class="token function">getDay</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> dateList<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>date_check<span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> dateList<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">let</span> <span class="token function-variable function">findIndexDate</span> <span class="token operator">=</span> <span class="token punctuation">(</span>date<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> index <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> schedule<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>schedule<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>date<span class="token operator">==</span>date<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">return</span> i<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> index<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">let</span> <span class="token function-variable function">addToSchedule</span> <span class="token operator">=</span> <span class="token punctuation">(</span>start_date<span class="token punctuation">,</span>end_date<span class="token punctuation">,</span>day<span class="token punctuation">,</span>lesson<span class="token punctuation">,</span>subject_name<span class="token punctuation">,</span>address<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> dateList <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// console.log(start_date,end_date,day,lesson,subject_name,address);</span> dateList <span class="token operator">=</span> <span class="token function">findDatewithDay</span><span class="token punctuation">(</span>start_date<span class="token punctuation">,</span>end_date<span class="token punctuation">,</span>day<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> dateList<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">var</span> found <span class="token operator">=</span> <span class="token function">findIndexDate</span><span class="token punctuation">(</span>dateList<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>found <span class="token operator">==</span> <span class="token operator">-</span><span class="token number">1</span> <span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">let</span> lessons <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> lessons<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>lesson<span class="token punctuation">:</span>lesson<span class="token punctuation">,</span>subject_name<span class="token punctuation">:</span>subject_name<span class="token punctuation">,</span>address<span class="token punctuation">:</span>address<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> schedule<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>date<span class="token punctuation">:</span>dateList<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span>lessons<span class="token punctuation">:</span>lessons<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token keyword">else</span><span class="token punctuation">{</span> schedule<span class="token punctuation">[</span>found<span class="token punctuation">]</span><span class="token punctuation">.</span>lessons<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>lesson<span class="token punctuation">:</span>lesson<span class="token punctuation">,</span>subject_name<span class="token punctuation">:</span>subject_name<span class="token punctuation">,</span>address<span class="token punctuation">:</span>address<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">let</span> <span class="token function-variable function">lessonArray</span> <span class="token operator">=</span> <span class="token punctuation">(</span>lesson<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">let</span> lesson_array_new <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> lesson_array <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'1,2,3'</span><span class="token punctuation">,</span><span class="token string">'4,5,6'</span><span class="token punctuation">,</span><span class="token string">'7,8,9'</span><span class="token punctuation">,</span><span class="token string">'10,11,12'</span><span class="token punctuation">,</span><span class="token string">'13,14,15,16'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> i <span class="token operator"><</span> lesson_array<span class="token punctuation">.</span>length <span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>lesson<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>lesson_array<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">{</span> lesson_array_new<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>lesson_array<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> lesson_array_new<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">let</span> <span class="token function-variable function">getInfoDetail</span> <span class="token operator">=</span> <span class="token punctuation">(</span>start_date<span class="token punctuation">,</span>end_date<span class="token punctuation">,</span>subject_name<span class="token punctuation">,</span>str<span class="token punctuation">)</span> <span class="token operator">=></span><span class="token punctuation">{</span> str <span class="token operator">=</span> str<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"n"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i <span class="token operator"><</span> str<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>str<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">!=</span> <span class="token string">''</span> <span class="token operator">&&</span> str<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">!=</span> <span class="token keyword">null</span> <span class="token operator">&&</span> str<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">!=</span> undefined<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token comment">//console.log("===>",str_start_date,str_end_date,str[i]);</span> <span class="token keyword">let</span> str_info <span class="token operator">=</span> str<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"tại"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> address <span class="token operator">=</span> str_info<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> day_and_lesson <span class="token operator">=</span> str_info<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"tiết"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> lesson <span class="token operator">=</span> day_and_lesson<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> day <span class="token operator">=</span> day_and_lesson<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">"Thứ"</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> lesson_array <span class="token operator">=</span> <span class="token function">lessonArray</span><span class="token punctuation">(</span>lesson<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> lesson_array<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token comment">// console.log(start_date,end_date,day,lesson_array[i],subject_name,address);</span> <span class="token function">addToSchedule</span><span class="token punctuation">(</span>start_date<span class="token punctuation">,</span>end_date<span class="token punctuation">,</span>day<span class="token punctuation">,</span>lesson_array<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span>subject_name<span class="token punctuation">,</span>address<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">var</span> workbook <span class="token operator">=</span> <span class="token constant">XLSX</span><span class="token punctuation">.</span><span class="token function">readFile</span><span class="token punctuation">(</span>path<span class="token punctuation">.</span><span class="token function">resolve</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>__dirname<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">/files`</span></span><span class="token punctuation">,</span>file<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> worksheet <span class="token operator">=</span> workbook<span class="token punctuation">.</span>Sheets<span class="token punctuation">[</span>workbook<span class="token punctuation">.</span>SheetNames<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> name <span class="token operator">=</span> worksheet<span class="token punctuation">[</span><span class="token string">"C6"</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> student_id <span class="token operator">=</span> worksheet<span class="token punctuation">[</span><span class="token string">"F6"</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> class_name <span class="token operator">=</span> worksheet<span class="token punctuation">[</span><span class="token string">"C7"</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> major <span class="token operator">=</span> worksheet<span class="token punctuation">[</span><span class="token string">"F8"</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span>z <span class="token keyword">in</span> worksheet<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>z<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">===</span> <span class="token string">'!'</span><span class="token punctuation">)</span> <span class="token keyword">continue</span><span class="token punctuation">;</span> <span class="token comment">//console.log(getAddressCell(z),z,worksheet[z]["v"]);</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>worksheet<span class="token punctuation">[</span>z<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"Từ"</span><span class="token punctuation">)</span><span class="token operator">>=</span><span class="token number">0</span> <span class="token operator">&&</span> worksheet<span class="token punctuation">[</span>z<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"đến"</span><span class="token punctuation">)</span><span class="token operator">>=</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">let</span> address_cell <span class="token operator">=</span> <span class="token function">getAddressCell</span><span class="token punctuation">(</span>z<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> subject_name <span class="token operator">=</span> worksheet<span class="token punctuation">[</span><span class="token template-string"><span class="token string">`F</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>address_cell<span class="token punctuation">.</span>row<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"-"</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> sessionList <span class="token operator">=</span> worksheet<span class="token punctuation">[</span>z<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"v"</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"Từ"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>sessionList<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">let</span> str <span class="token operator">=</span> sessionList<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">"n"</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">":"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> str_datetime <span class="token operator">=</span> str<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"đến"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> str_start_date <span class="token operator">=</span> str_datetime<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">let</span> str_end_date <span class="token operator">=</span> str_datetime<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>str_start_date <span class="token operator">!=</span> undefined <span class="token operator">&&</span> str_end_date <span class="token operator">!=</span> undefined<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token function">getInfoDetail</span><span class="token punctuation">(</span><span class="token function">formatDateYMD</span><span class="token punctuation">(</span>str_start_date<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token function">formatDateYMD</span><span class="token punctuation">(</span>str_end_date<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>subject_name<span class="token punctuation">,</span>str<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> fs<span class="token punctuation">.</span><span class="token function">unlink</span><span class="token punctuation">(</span>path<span class="token punctuation">.</span><span class="token function">resolve</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>__dirname<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">/files`</span></span><span class="token punctuation">,</span>file<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token keyword">throw</span> err<span class="token punctuation">;</span> <span class="token comment">// if no error, file has been deleted successfully</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'readFile'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">true</span><span class="token punctuation">,</span>message<span class="token punctuation">:</span><span class="token template-string"><span class="token string">`File </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>file<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> deleted!`</span></span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'readFile'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">true</span><span class="token punctuation">,</span>student_id <span class="token punctuation">:</span>student_id<span class="token punctuation">,</span>name<span class="token punctuation">:</span>name<span class="token punctuation">,</span>class_name<span class="token punctuation">:</span>class_name<span class="token punctuation">,</span>major<span class="token punctuation">:</span>major<span class="token punctuation">,</span>schedule<span class="token punctuation">:</span>schedule<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token keyword">catch</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">{</span> fs<span class="token punctuation">.</span><span class="token function">unlink</span><span class="token punctuation">(</span>path<span class="token punctuation">.</span><span class="token function">resolve</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>__dirname<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">/files`</span></span><span class="token punctuation">,</span>file<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token keyword">throw</span> err<span class="token punctuation">;</span> <span class="token comment">// if no error, file has been deleted successfully</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'readFile'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">true</span><span class="token punctuation">,</span>message<span class="token punctuation">:</span><span class="token template-string"><span class="token string">`File </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>file<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> deleted!`</span></span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">reject</span><span class="token punctuation">(</span><span class="token punctuation">{</span>task<span class="token punctuation">:</span><span class="token string">'readFile'</span><span class="token punctuation">,</span>success<span class="token punctuation">:</span><span class="token boolean">false</span><span class="token punctuation">,</span>error<span class="token punctuation">:</span>e<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Kết quả
1 2 | <span class="token punctuation">{</span><span class="token property">"task"</span><span class="token operator">:</span><span class="token string">"readFile"</span><span class="token punctuation">,</span><span class="token property">"success"</span><span class="token operator">:</span><span class="token boolean">true</span><span class="token punctuation">,</span><span class="token property">"student_id"</span><span class="token operator">:</span><span class="token string">"xxxxx"</span><span class="token punctuation">,</span><span class="token property">"name"</span><span class="token operator">:</span><span class="token string">"xxxxx"</span><span class="token punctuation">,</span><span class="token property">"class_name"</span><span class="token operator">:</span><span class="token string">"xxx"</span><span class="token punctuation">,</span><span class="token property">"major"</span><span class="token operator">:</span><span class="token string">"Công nghệ thông tin"</span><span class="token punctuation">,</span><span class="token property">"schedule"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1578355200000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1578960000000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Kiến trúc máy tính"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1580688000000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Nguyên lý hệ điều hành"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1581292800000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Nguyên lý hệ điều hành"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1581897600000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Nguyên lý hệ điều hành"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1582502400000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Nguyên lý hệ điều hành"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1583107200000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Nguyên lý hệ điều hành"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1583712000000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Nguyên lý hệ điều hành"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1584316800000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"7,8,9"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Nguyên lý hệ điều hành"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">"date"</span><span class="token operator">:</span><span class="token number">1584057600000</span><span class="token punctuation">,</span><span class="token property">"lessons"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"lesson"</span><span class="token operator">:</span><span class="token string">"10,11,12"</span><span class="token punctuation">,</span><span class="token property">"subject_name"</span><span class="token operator">:</span><span class="token string">"Hệ thống thông tin di động"</span><span class="token punctuation">,</span><span class="token property">"address"</span><span class="token operator">:</span><span class="token string">" 301_TA2 TA2"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span> |
Sản phẩm
API được sử dụng trong app viết bởi anh trong CLB của mình.
Ứng dụng xem lịch học
Link bài viết https://traiit.github.io/javascript/nodejs/2020/03/07/Toi-da-viet-API-lay-thoi-khoa-bieu-truong-nhu-the-nao.html
traiIT, Xin cảm ơn các bạn