投后结案_流量分析

云图扩展工具

  1. // ==UserScript==
  2. // @name 投后结案_流量分析
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1.1
  5. // @description 云图扩展工具
  6. // @author siji-Xian
  7. // @match *://yuntu.oceanengine.com/yuntu_brand/evaluation_brand/report/flow?*
  8. // @icon https://lf3-static.bytednsdoc.com/obj/eden-cn/prhaeh7pxvhn/yuntu/yuntu-logo_default.svg
  9. // @grant none
  10. // @license MIT
  11. // @require https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js
  12. // @require https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js
  13. // @require https://gf.qytechs.cn/scripts/404478-jsonexportexcel-min/code/JsonExportExcelmin.js?version=811266
  14. // @require https://gf.qytechs.cn/scripts/455576-qmsg/code/Qmsg.js?version=1122361
  15. // ==/UserScript==
  16.  
  17. (function () {
  18. "use strict";
  19. var new_element = document.createElement("link");
  20. new_element.setAttribute("rel", "stylesheet");
  21. new_element.setAttribute("href", "https://qmsg.refrain.xyz/message.min.css");
  22. document.body.appendChild(new_element);
  23.  
  24. //指定SPU的人群资产重叠分布
  25. const button = document.createElement("div");
  26. button.textContent = "导出数据";
  27. Object.assign(button.style, {
  28. height: "34px",
  29. lineHeight: "var(--line-height, 34px)",
  30. alignItems: "center",
  31. color: "white",
  32. background: "linear-gradient(90deg, rgba(0, 239, 253), rgba(64, 166, 254))",
  33. borderRadius: "5px",
  34. marginLeft: "10px",
  35. fontSize: "13px",
  36. padding: "0 10px",
  37. cursor: "pointer",
  38. fontWeight: "500",
  39. });
  40. button.addEventListener("click", urlClick);
  41.  
  42. //message.js
  43. let loadingMsg = null;
  44.  
  45. //目标数据
  46. let target_data = null;
  47.  
  48. (function listen() {
  49. var origin = {
  50. open: XMLHttpRequest.prototype.open,
  51. send: XMLHttpRequest.prototype.send,
  52. };
  53. XMLHttpRequest.prototype.open = function (a, b) {
  54. this.addEventListener("load", replaceFn);
  55. origin.open.apply(this, arguments);
  56. };
  57. XMLHttpRequest.prototype.send = function (a, b) {
  58. origin.send.apply(this, arguments);
  59. };
  60. function replaceFn(obj) {
  61. if (
  62. this?._url?.slice(0, 54) ==
  63. "/measurement/api/eva/get_evaluation_flow_by_day_result"
  64. ) {
  65. target_data = JSON.parse(obj?.target?.response);
  66. }
  67. }
  68. })();
  69.  
  70. function appendDoc() {
  71. const likeComment = document.querySelector(".styles-module__overview-extra--Tc0lo");
  72. if (likeComment) {
  73. likeComment.append(button);
  74. return;
  75. }
  76. setTimeout(appendDoc, 1000);
  77. }
  78. appendDoc();
  79.  
  80. function transformData(inputData) {
  81. const outputData = [];
  82. inputData.forEach((item) => {
  83. const reportType = item?.report_type?.query_type_point_name_zh || item?.trigger_point?.level_3_trigger_point?.query_type_point_name_zh || item?.trigger_point?.level_2_trigger_point?.query_type_point_name_zh || item?.trigger_point?.level_1_trigger_point?.query_type_point_name_zh;
  84. const byDayList = item.by_day_list;
  85. const transformedItem = {
  86. query_type_point_name_zh: reportType,
  87. };
  88. for (const date in byDayList) {
  89. transformedItem[date] = byDayList[date].pv;
  90. }
  91. outputData.push(transformedItem);
  92. })
  93. return outputData;
  94. }
  95.  
  96. function transformData1(inputData) {
  97. const outputData = {
  98. query_type_point_name_zh: "推广类型"
  99. };
  100. for (const date in inputData) {
  101. outputData[date] = date;
  102. }
  103. return outputData;
  104. }
  105.  
  106. function expExcel(e) {
  107. let res = e.data.item_list
  108. let data = transformData(res)
  109.  
  110. let contrastData = transformData1(res[0].by_day_list)
  111. let contrast = {
  112. ...contrastData
  113. }
  114. let option = {};
  115. option.fileName = "投后结案_流量分析"; //文件名
  116. option.datas = [{
  117. sheetName: '',
  118. sheetData: data,
  119. sheetHeader: Object.values(contrast),
  120. sheetFilter: Object.keys(contrast),
  121. columnWidths: [], // 列宽
  122. }]
  123. var toExcel = new ExportJsonExcel(option);
  124. toExcel.saveExcel();
  125. loadingMsg.close();
  126. }
  127.  
  128. function urlClick() {
  129. if (target_data) {
  130. loadingMsg = Qmsg.loading("正在导出,请勿重复点击!");
  131. expExcel(target_data);
  132. } else {
  133. loadingMsg = Qmsg.error("数据加载失败,请重试");
  134. }
  135. }
  136. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址