云图扩展工具
// ==UserScript== // @name GTA导出 // @namespace http://tampermonkey.net/ // @license MIT // @version 0.8 // @description 云图扩展工具 // @author siji-Xian // @match *://yuntu.oceanengine.com/yuntu_ng/assets/crowd/monitoring?* // @icon https://www.google.com/s2/favicons?domain=oceanengine.com // @grant none // @require https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js // @require https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js // @require https://greasyfork.org/scripts/404478-jsonexportexcel-min/code/JsonExportExcelmin.js?version=811266 // @require https://greasyfork.org/scripts/463728-lodash-js/code/lodashjs.js?version=1174104 // @require https://greasyfork.org/scripts/455576-qmsg/code/Qmsg.js?version=1122361 // ==/UserScript== (function () { "use strict"; var analysis_type = 1, //0是蓄水期, 1是活动期 gta_type = 1; //1是新客蓄水期 ,2是新客活动期 ,4是老客 //analysis_type = 0 不用管这个 var new_element = document.createElement("link"); new_element.setAttribute("rel", "stylesheet"); new_element.setAttribute("href", "https://qmsg.refrain.xyz/message.min.css"); document.body.appendChild(new_element); var button1_1 = document.createElement("button"); //创建一个按钮 button1_1.textContent = "进行中蓄水"; //按钮内容 button1_1.style.height = "32px"; //高 button1_1.style.lineHeight = "32px"; //行高 button1_1.style.align = "center"; //文本居中 button1_1.style.color = "white"; //按钮文字颜色 button1_1.style.background = "#1f4bd9"; //按钮底色 button1_1.style.border = "0px"; //边框属性 button1_1.style.borderRadius = "0px"; //按钮四个角弧度 button1_1.style.marginLeft = "10px"; button1_1.style.fontSize = "12px"; button1_1.style.padding = "0 5px"; button1_1.addEventListener("click", urlClick1_1); //监听按钮点击事件 var button1_2 = document.createElement("button"); //创建一个按钮 button1_2.textContent = "进行中新客蓄水"; //按钮内容 button1_2.style.height = "32px"; //高 button1_2.style.lineHeight = "32px"; //行高 button1_2.style.align = "center"; //文本居中 button1_2.style.color = "white"; //按钮文字颜色 button1_2.style.background = "#1f4bd9"; //按钮底色 button1_2.style.border = "0px"; //边框属性 button1_2.style.borderRadius = "0px"; //按钮四个角弧度 button1_2.style.marginLeft = "10px"; button1_2.style.fontSize = "12px"; button1_2.style.padding = "0 5px"; button1_2.addEventListener("click", urlClick1_2); //监听按钮点击事件 var button1_3 = document.createElement("button"); //创建一个按钮 button1_3.textContent = "进行中活动新增"; //按钮内容 button1_3.style.height = "32px"; //高 button1_3.style.lineHeight = "32px"; //行高 button1_3.style.align = "center"; //文本居中 button1_3.style.color = "white"; //按钮文字颜色 button1_3.style.background = "#1f4bd9"; //按钮底色 button1_3.style.border = "0px"; //边框属性 button1_3.style.borderRadius = "0px"; //按钮四个角弧度 button1_3.style.marginLeft = "10px"; button1_3.style.fontSize = "12px"; button1_3.style.padding = "0 5px"; button1_3.addEventListener("click", urlClick1_3); //监听按钮点击事件 var button1_4 = document.createElement("button"); //创建一个按钮 button1_4.textContent = "进行中老客转化"; //按钮内容 button1_4.style.height = "32px"; //高 button1_4.style.lineHeight = "32px"; //行高 button1_4.style.align = "center"; //文本居中 button1_4.style.color = "white"; //按钮文字颜色 button1_4.style.background = "#1f4bd9"; //按钮底色 button1_4.style.border = "0px"; //边框属性 button1_4.style.borderRadius = "0px"; //按钮四个角弧度 button1_4.style.marginLeft = "10px"; button1_4.style.fontSize = "12px"; button1_4.style.padding = "0 5px"; button1_4.addEventListener("click", urlClick1_4); //监听按钮点击事件 var button = document.createElement("button"); //创建一个按钮 button.textContent = "进行中成交概览"; //按钮内容 button.style.height = "32px"; //高 button.style.lineHeight = "32px"; //行高 button.style.align = "center"; //文本居中 button.style.color = "white"; //按钮文字颜色 button.style.background = "#1f4bd9"; //按钮底色 button.style.border = "0px"; //边框属性 button.style.borderRadius = "0px"; //按钮四个角弧度 button.style.marginLeft = "10px"; button.style.fontSize = "12px"; button.style.padding = "0 5px"; button.addEventListener("click", urlClick); //监听按钮点击事件 var button2_1 = document.createElement("button"); //创建一个按钮 button2_1.textContent = "历史蓄水"; //按钮内容 button2_1.style.height = "32px"; //高 button2_1.style.lineHeight = "32px"; //行高 button2_1.style.align = "center"; //文本居中 button2_1.style.color = "white"; //按钮文字颜色 button2_1.style.background = "#1f4bd9"; //按钮底色 button2_1.style.border = "0px"; //边框属性 button2_1.style.borderRadius = "0px"; //按钮四个角弧度 button2_1.style.marginLeft = "10px"; button2_1.style.fontSize = "12px"; button2_1.style.padding = "0 5px"; button2_1.addEventListener("click", urlClick2_1); //监听按钮点击事件 var button2_2 = document.createElement("button"); //创建一个按钮 button2_2.textContent = "历史新客蓄水"; //按钮内容 button2_2.style.height = "32px"; //高 button2_2.style.lineHeight = "32px"; //行高 button2_2.style.align = "center"; //文本居中 button2_2.style.color = "white"; //按钮文字颜色 button2_2.style.background = "#1f4bd9"; //按钮底色 button2_2.style.border = "0px"; //边框属性 button2_2.style.borderRadius = "0px"; //按钮四个角弧度 button2_2.style.marginLeft = "10px"; button2_2.style.fontSize = "12px"; button2_2.style.padding = "0 5px"; button2_2.addEventListener("click", urlClick2_2); //监听按钮点击事件 var button2_3 = document.createElement("button"); //创建一个按钮 button2_3.textContent = "历史新客新增"; //按钮内容 button2_3.style.height = "32px"; //高 button2_3.style.lineHeight = "32px"; //行高 button2_3.style.align = "center"; //文本居中 button2_3.style.color = "white"; //按钮文字颜色 button2_3.style.background = "#1f4bd9"; //按钮底色 button2_3.style.border = "0px"; //边框属性 button2_3.style.borderRadius = "0px"; //按钮四个角弧度 button2_3.style.marginLeft = "10px"; button2_3.style.fontSize = "12px"; button2_3.style.padding = "0 5px"; button2_3.addEventListener("click", urlClick2_3); //监听按钮点击事件 var button2_4 = document.createElement("button"); //创建一个按钮 button2_4.textContent = "历史老客转化"; //按钮内容 button2_4.style.height = "32px"; //高 button2_4.style.lineHeight = "32px"; //行高 button2_4.style.align = "center"; //文本居中 button2_4.style.color = "white"; //按钮文字颜色 button2_4.style.background = "#1f4bd9"; //按钮底色 button2_4.style.border = "0px"; //边框属性 button2_4.style.borderRadius = "0px"; //按钮四个角弧度 button2_4.style.marginLeft = "10px"; button2_4.style.fontSize = "12px"; button2_4.style.padding = "0 5px"; button2_4.addEventListener("click", urlClick2_4); //监听按钮点击事件 var button3_1 = document.createElement("button"); //创建一个按钮 button3_1.textContent = "自定义蓄水"; //按钮内容 button3_1.style.height = "32px"; //高 button3_1.style.lineHeight = "32px"; //行高 button3_1.style.align = "center"; //文本居中 button3_1.style.color = "white"; //按钮文字颜色 button3_1.style.background = "#1f4bd9"; //按钮底色 button3_1.style.border = "0px"; //边框属性 button3_1.style.borderRadius = "0px"; //按钮四个角弧度 button3_1.style.marginLeft = "10px"; button3_1.style.fontSize = "12px"; button3_1.style.padding = "0 5px"; button3_1.addEventListener("click", urlClick3_1); //监听按钮点击事件 var button3_2 = document.createElement("button"); //创建一个按钮 button3_2.textContent = "自定义新客蓄水"; //按钮内容 button3_2.style.height = "32px"; //高 button3_2.style.lineHeight = "32px"; //行高 button3_2.style.align = "center"; //文本居中 button3_2.style.color = "white"; //按钮文字颜色 button3_2.style.background = "#1f4bd9"; //按钮底色 button3_2.style.border = "0px"; //边框属性 button3_2.style.borderRadius = "0px"; //按钮四个角弧度 button3_2.style.marginLeft = "10px"; button3_2.style.fontSize = "12px"; button3_2.style.padding = "0 5px"; button3_2.addEventListener("click", urlClick3_2); //监听按钮点击事件 var button3_3 = document.createElement("button"); //创建一个按钮 button3_3.textContent = "自定义新客新增"; //按钮内容 button3_3.style.height = "32px"; //高 button3_3.style.lineHeight = "32px"; //行高 button3_3.style.align = "center"; //文本居中 button3_3.style.color = "white"; //按钮文字颜色 button3_3.style.background = "#1f4bd9"; //按钮底色 button3_3.style.border = "0px"; //边框属性 button3_3.style.borderRadius = "0px"; //按钮四个角弧度 button3_3.style.marginLeft = "10px"; button3_3.style.fontSize = "12px"; button3_3.style.padding = "0 5px"; button3_3.addEventListener("click", urlClick3_3); //监听按钮点击事件 var button3_4 = document.createElement("button"); //创建一个按钮 button3_4.textContent = "自定义老客转化"; //按钮内容 button3_4.style.height = "32px"; //高 button3_4.style.lineHeight = "32px"; //行高 button3_4.style.align = "center"; //文本居中 button3_4.style.color = "white"; //按钮文字颜色 button3_4.style.background = "#1f4bd9"; //按钮底色 button3_4.style.border = "0px"; //边框属性 button3_4.style.borderRadius = "0px"; //按钮四个角弧度 button3_4.style.marginLeft = "10px"; button3_4.style.fontSize = "12px"; button3_4.style.padding = "0 5px"; button3_4.addEventListener("click", urlClick3_4); //监听按钮点击事件 var button3 = document.createElement("button"); //创建一个按钮 button3.textContent = "自定义成交概览"; //按钮内容 button3.style.height = "32px"; //高 button3.style.lineHeight = "32px"; //行高 button3.style.align = "center"; //文本居中 button3.style.color = "white"; //按钮文字颜色 button3.style.background = "#1f4bd9"; //按钮底色 button3.style.border = "0px"; //边框属性 button3.style.borderRadius = "0px"; //按钮四个角弧度 button3.style.marginLeft = "10px"; button3.style.fontSize = "12px"; button3.style.padding = "0 5px"; button3.addEventListener("click", urlClick3); //监听按钮点击事件 //品牌 let brandObj = { 1672744273970184: "沙宣", 1713035740313614: "海昌", 1672744301182989: "潘婷", 1713573417704462: "SSS", 1716472555224075: "奶糖派NTP", 1718566610217988: "南国食品旗舰店", 1718731435013124: "beautigo", 1726899190084611: "Kate Somerville海外旗舰店", 1729546814550019: "让缇丝Jean d'estrées", 1730713495040007: "科施佳官方旗舰店", 1732519757634573: "[email protected]", 1733594070401032: "Sepai", 1736238360556548: "杭州天萃诗化妆品有限公司", 1739400043457611: "瑞斐时天津碧捷", 1744999758913544: "HORMETA欧米达", 1648829120397320: "Filorga/菲洛嘉", 1696356811251726: "HADAY/海天", 1648829117571079: "Nivea/妮维雅", 1648829118742542: "HomeFacialPro", 1672744346769421: "Mionsoo/棉上", 1702602772284429: "AUX/奥克斯", 1696356998849550: "Bear/小熊", 1672744362622983: "Baby elephant/红色小象", 1657598035549197: "OLAY/玉兰油", 1657598044429383: "BIOHYALUX/润百颜", 1672744296373261: "a2/至初", 1672744348379143: "最生活", 1672744376680456: "MANTING/满婷", 1672744368166926: "pwu/朴物大美", 1703060893535310: "UNISKIN/优时颜", 1679081331241997: "ClorisLand/花皙蔻", 1710507460462600: "Bb LABORATORIES/苾莱宝", 1702602792209421: "BRITA/碧然德", 1696356993701902: "FLYCO/飞科", 1696356967609421: "PMPM", 1703060791743559: "RELLET/颐莲", 1708581408431111: "timage/彩棠", 1715399324706823: "Dermalogica/德美乐嘉", 1713035750084616: "肌肉科技", 1696356873768974: "官栈", 1713035741929479: "MOODY", 1713035776524360: "猎聘", 1703060860826648: "Prof.Ling/凌博士", 1696356964662285: "LUONENG/罗能", 1696356991309896: "Ulike", 1702602808232974: "JINKAIRUI/金凯瑞", 1713035768359943: "Zhong An Insurance/众安保险", 1726246245022727: "书亦烧仙草", 1726246207527048: "可复美", 1728619073817672: "BeautiGO", 1728619134274567: "奶糖派", 1731407696747534: "MURAD", 1731407714116622: "OVF", 1737060287995918: "JEAND'ESTREES/让缇丝", }; //message.js let loadingMsg = null; // //导出文件名 let fileName = ""; //默认GET请求 const getRequestOptions = { method: "GET", redirect: "follow", }; // const htmlModel = `<div style="display: flex;flex: 1;"> // <button id='' style="height:32px;line-height:32px;border: 0;background-color: #1f4bd9;color: #fff; padding: 0 5px;border-radius: 3px;">自定义成交概览</button> // </div>` function appendDoc() { let like_comment; setTimeout(() => { like_comment = document.getElementsByClassName( "index__container--QOzF4" )[0]; if (like_comment && urlClick3_4) { like_comment.append(button1_2); //把按钮加入到 x 的子节点中 like_comment.append(button1_3); //把按钮加入到 x 的子节点中 like_comment.append(button1_4); //把按钮加入到 x 的子节点中 like_comment.append(button); // like_comment.append(button2_1); //把按钮加入到 x 的子节点中 // like_comment.append(button2_2); //把按钮加入到 x 的子节点中 // like_comment.append(button2_3); //把按钮加入到 x 的子节点中 // like_comment.append(button2_4); //把按钮加入到 x 的子节点中 like_comment.append(button3_1); //把按钮加入到 x 的子节点中 like_comment.append(button3_2); //把按钮加入到 x 的子节点中 like_comment.append(button3_3); //把按钮加入到 x 的子节点中 like_comment.append(button3_4); //把按钮加入到 x 的子节点中 like_comment.append(button3); //把按钮加入到 x 的子节点中 return; } appendDoc(); }, 1000); } appendDoc(); //导出(防抖) var debounce; //导出数据 let sheetArr = []; let sheetArr1 = []; //query参数获取 function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] == variable) { return pair[1]; } } return false; } //获取brand信息 let brand = localStorage.getItem("__Garfish__platform__yuntu_user") || ""; let brands = JSON.parse(brand); //封装网络请求(带导出) function fetchFun(url, data = {}, requestOptions = getRequestOptions) { const urlData = Object.keys(data) .map((v) => `${v}=${data[v]}`) .join("&"); return fetch(`${url}?${urlData}`, requestOptions) .then((response) => response.text()) .then((result) => { debounce(); return JSON.parse(result); }) .catch((error) => console.log("error", error)); } function fetchFun2(url, data = {}, requestOptions = getRequestOptions) { const urlData = Object.keys(data) .map((v) => `${v}=${data[v]}`) .join("&"); return fetch(`${url}?${urlData}`, requestOptions) .then((response) => response.text()) .then((result) => { return JSON.parse(result); }) .catch((error) => console.log("error", error)); } //获取行业id async function getIndustryId() { let industry_id_url = `https://yuntu.oceanengine.com/yuntu_ng/api/v1/get_user_info`; let res = await fetchFun2(industry_id_url, { aadvid: getQueryVariable("aadvid"), }); let industryValue = document .getElementsByClassName("byted-input-size-md")[0] .value.split("/")[ document.getElementsByClassName("byted-input-size-md")[0].value.split("/") .length - 1 ]; let data = res; let a = data?.data?.brandMetadata?.filter((e) => { return e?.industry_name == industryValue; })[0]; return a.industry_id; } //活动类型记录获取 async function getQueryType(e) { let industry_id = await getIndustryId(); let data = { report_name: "", page_index: 1, page_size: 1, query_type: e, //1:进行中活动,2:历史活动 3:自定义 report_status: 0, aadvid: getQueryVariable("aadvid"), brand_id: brands.brand_id, industry_id, }; let requestData1 = await fetchFun2( "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaReportQueryList", data ); data.page_size = requestData1.data.total; let requestData = await fetchFun2( "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaReportQueryList", data ); let titleValue = document.getElementsByClassName("index__name--yem7b")[0]?.innerText; if (titleValue) { let arrList = requestData.data.reports.filter( (v) => v.report_name === titleValue ); arrList.forEach((v) => { getTermTabsItem( v.report_name, v.impound_begin_date, v.impound_end_date, v.harvest_begin_date, v.harvest_end_date, v.report_id, arrList.length ); //这是活动期转化分析 }); } else { if (!requestData.data.reports.length){ Qmsg.error('暂无数据'); loadingMsg.close(); return ; } requestData.data.reports.forEach((v) => { getTermTabsItem( v.report_name, v.impound_begin_date, v.impound_end_date, v.harvest_begin_date, v.harvest_end_date, v.report_id, requestData.data.reports.length ); //这是活动期转化分析 }); } } //活动类型记录获取 async function getQueryType1(e) { let industry_id = await getIndustryId(); let data = { report_name: "", page_index: 1, page_size: 1, query_type: e, //1:进行中活动,2:历史活动 3:自定义 report_status: 0, aadvid: getQueryVariable("aadvid"), brand_id: brands.brand_id, industry_id, }; let requestData1 = await fetchFun2( "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaReportQueryList", data ); data.page_size = requestData1.data.total; let requestData = await fetchFun2( "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaReportQueryList", data ); let titleValue = document.getElementsByClassName("index__name--yem7b")[0]?.innerText; if (titleValue) { let arrList = requestData.data.reports.filter( (v) => v.report_name === titleValue ); arrList.forEach((v) => { getTabsData( v.report_name, v.impound_begin_date, v.impound_end_date, v.harvest_begin_date, v.harvest_end_date, v.report_id, v.report_name, arrList.length ); //这是上面的取数 }); } else { if (!requestData.data.reports.length){ Qmsg.error('暂无数据'); loadingMsg.close(); return ; } requestData.data.reports.forEach((v) => { getTabsData( v.report_name, v.impound_begin_date, v.impound_end_date, v.harvest_begin_date, v.harvest_end_date, v.report_id, v.report_name, requestData.data.reports.length ); //这是上面的取数 }); } // requestData.data.reports.forEach(v => { // getTabsData(v.impound_begin_date,v.impound_end_date,v.harvest_begin_date,v.harvest_end_date,v.report_id,v.report_name,requestData.data.reports.length) //这是上面的取数 // }); } //活动数据获取 async function getTabsData( sheetName, impound_begin_date, impound_end_date, harvest_begin_date, harvest_end_date, report_id, report_name ) { let industry_id = await getIndustryId(); let contrast = { sheetName: "sheetName", 蓄水期开始时间: "impound_begin_date", 蓄水期结束时间: "impound_end_date", 活动期开始时间: "harvest_begin_date", 活动期结束时间: "harvest_end_date", 新客人数: "old_gmv_deal_cnt", 新客GMV: "old_gmv_gmv", 新客客单价: "old_gmv_unit_price", 老客人数: "old_deal_cnt", 存量购买人数: "old_a4_cover_num", 存量购买转化率: "old_a4_rate", 老客GMV: "old_gmv", 老客客单价: "old_unit_price", 活动期成交人数: "cover_num", 活动期gmv: "gmv", 活动期客单价: "unit_price", gmv目标完成度: "gmv_process", 最新日期: "latest_date", 新增A1规模: "new_A1_cover_num", 新增A1贡献新客人数: "new_A1_deal_cnt", 新增A1贡献占比: "new_A1_deal_rate", 新增A1转化率: "new_A1_flow_rate", 新增A2规模: "new_A2_cover_num", 新增A2贡献新客人数: "new_A2_deal_cnt", 新增A2贡献占比: "new_A2_deal_rate", 新增A2转化率: "new_A2_flow_rate", 新增A3规模: "new_A3_cover_num", 新增A3贡献新客人数: "new_A3_deal_cnt", 新增A3贡献占比: "new_A3_deal_rate", 新增A3转化率: "new_A3_flow_rate", 存量A1规模: "old_A1_cover_num", 存量A1贡献新客人数: "old_A1_deal_cnt", 存量A1贡献占比: "old_A1_deal_rate", 存量A1转化率: "old_A1_flow_rate", 存量A2规模: "old_A2_cover_num", 存量A2贡献新客人数: "old_A2_deal_cnt", 存量A2贡献占比: "old_A2_deal_rate", 存量A2转化率: "old_A2_flow_rate", 存量A3规模: "old_A3_cover_num", 存量A3贡献新客人数: "old_A3_deal_cnt", 存量A3贡献占比: "old_A3_deal_rate", 存量A3转化率: "old_A3_flow_rate", o人群贡献占比: "o_rate", }; let data = { industry_id, aadvid: getQueryVariable("aadvid"), brand_id: brands.brand_id, report_id, }; let requestData = await fetchFun( "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaHarvestGmvProfile", data ); let res = requestData?.data?.profiles || requestData?.data?.profile; let new_gmv = {}; Object.keys(res.new_gmv).forEach((v) => { new_gmv[`old_gmv_${v}`] = res.new_gmv[v]; }); let new_gmv_new_analysis = {}; res.new_gmv.new_analysis.map((v, i) => { let name = i == 0 ? "old" : i == 1 ? "new" : "o"; Object.keys(v).forEach((res) => { new_gmv_new_analysis[`${name}_${res}`] = v[res]; }); }); let new_gmv_new_analysis_details = {}; new_gmv_new_analysis.new_details.map((v, i) => { let name = i == 0 ? "new_A1" : i == 1 ? "new_A2" : "new_A3"; Object.keys(v).forEach((res) => { new_gmv_new_analysis_details[`${name}_${res}`] = v[res]; }); }); new_gmv_new_analysis.old_details.map((v, i) => { let name = i == 0 ? "old_A1" : i == 1 ? "old_A2" : "old_A3"; Object.keys(v).forEach((res) => { new_gmv_new_analysis_details[`${name}_${res}`] = v[res]; }); }); let old_gmv = {}; Object.keys(res.old_gmv).forEach((v) => { old_gmv[`old_${v}`] = res.old_gmv[v]; }); let sheetData = { sheetName, impound_begin_date, impound_end_date, harvest_begin_date, harvest_end_date, ...res, ...new_gmv, ...old_gmv, ...new_gmv_new_analysis, ...new_gmv_new_analysis_details, }; let datas = { sheetName: `(${report_id})`, sheetData, sheetHeader: Object.keys(contrast), sheetFilter: Object.values(contrast), columnWidths: [], // 列宽 }; sheetArr1.push(sheetData); } let expDatas = []; //活动期转化Item获取 async function getTermTabsItem( report_name, impound_begin_date, impound_end_date, harvest_begin_date, harvest_end_date, report_id, i ) { let contrast = analysis_type === 0 ? { 蓄水期开始时间: "impound_begin_date", 蓄水期结束时间: "impound_end_date", 触点: "trigger_point_name", ID: "trigger_point_id", 曝光次数: "show_cnt", 曝光人数: "show_uv", 曝光人数: "show_uv", 人均曝光次数: "show_avg", 流转规模: "to_a3_cnt", 流转率: "to_a3_rate", } : { 活动期开始时间: "harvest_begin_date", 活动期结束时间: "harvest_end_date", 触点: "trigger_point_name", ID: "trigger_point_id", 曝光次数: "show_cnt", 曝光人数: "show_uv", 曝光人数: "show_uv", 人均曝光次数: "show_avg", 存量转化人数: "to_a4_cnt", 存量转化率: "to_a4_rate", }; let industry_id = await getIndustryId(); let data = { aadvid: getQueryVariable("aadvid"), industry_id, brand_id: brands.brand_id, report_id, gta_type: gta_type, }; let requestData = await fetchFun2( "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaHarvestAnalysisProfile", data ); let res = requestData?.data?.profiles || requestData?.data?.profile?.analysis; let expExcel2Data = await Promise.all( res.map(async (v) => { let a = await getTermTabsData(report_id, report_name, v.card); return a; }) ); let arrData = [ { impound_begin_date, impound_end_date, harvest_begin_date, harvest_end_date, }, ]; expExcel2Data.forEach((v) => { arrData.push(...v.sheetData); }); expDatas.push({ sheetName: `(${report_id})${report_name}`, sheetData: arrData.length ? arrData : [{}], sheetHeader: Object.keys(contrast), sheetFilter: Object.values(contrast), columnWidths: [], // 列宽 }); if (expDatas.length === i) { expExcel2( `${brandObj[getQueryVariable("aadvid")]}${fileName}${moment().format( "YYYYMMDDHHmmss" )}GTA数据`, expDatas ); } } //活动期转化数据获取 async function getTermTabsData(report_id, report_name, card) { let contrast = analysis_type === 0 ? { 触点: "trigger_point_name", ID: "trigger_point_id", 曝光次数: "show_cnt", 曝光人数: "show_uv", 曝光人数: "show_uv", 人均曝光次数: "show_avg", 流转规模: "to_a3_cnt", 流转率: "to_a3_rate", } : { 触点: "trigger_point_name", ID: "trigger_point_id", 曝光次数: "show_cnt", 曝光人数: "show_uv", 曝光人数: "show_uv", 人均曝光次数: "show_avg", 存量转化人数: "to_a4_cnt", 存量转化率: "to_a4_rate", }; let baseUrl = analysis_type === 0 ? "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaImpoundAnalysis" : "https://yuntu.oceanengine.com/yuntu_ng/api/v1/AudienceGtaHarvestAnalysis"; let industry_id = await getIndustryId(); let data = { aadvid: getQueryVariable("aadvid"), industry_id, brand_id: brands.brand_id, report_id, gta_type: gta_type, analysis_type: 1, card, }; let requestData = await fetchFun2(baseUrl, data); let res = requestData.data.ax_analysis.tps; let res2 = res.map((v) => { return { ...v, trigger_point_name: `A${card}${v.trigger_point_name}`, }; }); return { sheetName: `${report_name}_A${card}`, sheetData: res2, sheetHeader: Object.keys(contrast), sheetFilter: Object.values(contrast), columnWidths: [], // 列宽 }; } function expExcel() { let option = {}; option.fileName = fileName; //文件名 option.datas = sheetArr; var toExcel = new ExportJsonExcel(option); toExcel.saveExcel(); loadingMsg.close(); } function expExcel1() { let contrast = { sheetName: "sheetName", 蓄水期开始时间: "impound_begin_date", 蓄水期结束时间: "impound_end_date", 活动期开始时间: "harvest_begin_date", 活动期结束时间: "harvest_end_date", 新客人数: "old_gmv_deal_cnt", 新客GMV: "old_gmv_gmv", 新客客单价: "old_gmv_unit_price", 老客人数: "old_deal_cnt", 存量购买人数: "old_a4_cover_num", 存量购买转化率: "old_a4_rate", 老客GMV: "old_gmv", 老客客单价: "old_unit_price", 活动期成交人数: "cover_num", 活动期gmv: "gmv", 活动期客单价: "unit_price", gmv目标完成度: "gmv_process", 最新日期: "latest_date", 新增A1规模: "new_A1_cover_num", 新增A1贡献新客人数: "new_A1_deal_cnt", 新增A1贡献占比: "new_A1_deal_rate", 新增A1转化率: "new_A1_flow_rate", 新增A2规模: "new_A2_cover_num", 新增A2贡献新客人数: "new_A2_deal_cnt", 新增A2贡献占比: "new_A2_deal_rate", 新增A2转化率: "new_A2_flow_rate", 新增A3规模: "new_A3_cover_num", 新增A3贡献新客人数: "new_A3_deal_cnt", 新增A3贡献占比: "new_A3_deal_rate", 新增A3转化率: "new_A3_flow_rate", 存量A1规模: "old_A1_cover_num", 存量A1贡献新客人数: "old_A1_deal_cnt", 存量A1贡献占比: "old_A1_deal_rate", 存量A1转化率: "old_A1_flow_rate", 存量A2规模: "old_A2_cover_num", 存量A2贡献新客人数: "old_A2_deal_cnt", 存量A2贡献占比: "old_A2_deal_rate", 存量A2转化率: "old_A2_flow_rate", 存量A3规模: "old_A3_cover_num", 存量A3贡献新客人数: "old_A3_deal_cnt", 存量A3贡献占比: "old_A3_deal_rate", 存量A3转化率: "old_A3_flow_rate", o人群贡献占比: "o_rate", }; let option = {}; option.fileName = fileName; //文件名 option.datas = [ { sheetName: "sheet1", sheetData: sheetArr1, sheetHeader: Object.keys(contrast), sheetFilter: Object.values(contrast), columnWidths: [], // 列宽 }, ]; var toExcel = new ExportJsonExcel(option); toExcel.saveExcel(); loadingMsg.close(); sheetArr1 = [] } function expExcel2(e, data) { let option = {}; option.fileName = e; //文件名 option.datas = data; // setdata_mgdb(data) var toExcel = new ExportJsonExcel(option); toExcel.saveExcel(); loadingMsg.close(); expDatas = []; } function urlClick1_1() { analysis_type = 0; fileName = "进行中蓄水"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(1); } function urlClick1_2() { analysis_type = 1; fileName = "进行中新客蓄水"; gta_type = 1; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(1); } function urlClick1_3() { analysis_type = 1; gta_type = 2; fileName = "进行中新客新增"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(1); } function urlClick1_4() { analysis_type = 1; gta_type = 4; fileName = "进行中老客转化"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(1); } function urlClick() { fileName = `${brandObj[getQueryVariable("aadvid")]}进行中成交概览数据`; debounce = _.debounce(expExcel1, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType1(1); } function urlClick3() { fileName = `${brandObj[getQueryVariable("aadvid")]}自定义成交概览数据`; debounce = _.debounce(expExcel1, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType1(3); } function urlClick2_1() { analysis_type = 0; fileName = "GTA历史活动蓄水期数据"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(2); } function urlClick2_2() { analysis_type = 1; gta_type = 1; fileName = "GTA历史活动新客蓄水期数据"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(2); } function urlClick2_3() { analysis_type = 1; gta_type = 2; analysis_type = 0; fileName = "GTA历史活动新客活动期数据"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(2); } function urlClick2_4() { analysis_type = 1; gta_type = 4; fileName = "GTA历史活动老客转化数据"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(2); } function urlClick3_1() { analysis_type = 0; fileName = "进行中蓄水"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(3); } function urlClick3_2() { analysis_type = 1; gta_type = 1; fileName = "进行中新客蓄水"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(3); } function urlClick3_3() { analysis_type = 1; gta_type = 2; fileName = "进行中新客新增"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(3); } function urlClick3_4() { analysis_type = 1; gta_type = 4; fileName = "进行中老客转化"; debounce = _.debounce(expExcel, 5000); loadingMsg = Qmsg.loading("正在导出,请勿重复点击!"); getQueryType(3); } })();