Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2022
5,903
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. // ==UserScript==
  2. // @name NTHU ccxp Dump Course Classmate
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description dump classmate in current course to csv
  6. // @author You
  7. // @match https://www.ccxp.nthu.edu.tw/ccxp/COURSE/JH/7/7.2/7.2.16/JH72g003.php
  8. // @grant none
  9. // ==/UserScript==
  10. (function() {
  11. 'use strict';
  12. function download(name, content) {
  13. let element = document.createElement('a');
  14. let url = URL.createObjectURL(new Blob([content], { type: "text/csv" }));
  15.  
  16. element.setAttribute('href', url);
  17. element.setAttribute('download', name);
  18.  
  19. element.style.display = 'none';
  20. document.body.appendChild(element);
  21.  
  22. element.click();
  23.  
  24. document.body.removeChild(element);
  25. URL.revokeObjectURL(url);
  26. }
  27.  
  28. let buttons = document.querySelector("form[name='form1'] p");
  29. buttons.innerHTML += `<input type="button" value="產生修課同學名單 (CSV 格式)">`;
  30. buttons.querySelector("input:last-child").onclick = function() {
  31. let courseInfo = document.querySelector("table.class3");
  32. const courseId = courseInfo.querySelector("td:nth-of-type(1)").innerText;
  33. const courseName = courseInfo.querySelector("td:nth-of-type(2)").innerText.split("\n")[0];
  34.  
  35. let result = [];
  36.  
  37. for (let row of document.querySelector("table:not(.class2):not(.class3)").querySelectorAll("tr")) {
  38. let [_, id, studentId, studentName, studentDepartment, studentEmail] = [...(Array.from(row.children).map(el => el.innerText))];
  39. result.push(`${id},${studentId},${studentName},${studentDepartment},${studentEmail}`)
  40. }
  41.  
  42. download(`${courseId} ${courseName}.csv`, result.join("\n"));
  43. }
  44. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement