您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
商家流量导出Excel
当前为
// ==UserScript== // @name 美团商家流量导出Excel // @namespace http://tampermonkey.net/ // @version 0.1.2 // @description 商家流量导出Excel // @author yhpl-pgq // @match https://shangoue.meituan.com/* // @require http://cdn.staticfile.org/xlsx/0.16.1/xlsx.mini.min.js // @grant GM_xmlhttpRequest // ==/UserScript== (function() { 'use strict'; addButton(); console.log('enter') })(); var xmlExportContent = []; function addButton(){ var headerLeft = $("#reload-page")[0]; var header = headerLeft.parentElement; var button = document.createElement('BUTTON'); button.innerText = "我是小可爱"; button.onclick = getStore; button.id = "yhplExport"; header.appendChild(button); } function onStoreSuccess(node){ var code = node.code window.node = node; console.log('onSuccess, code:'+code); if (code == 0){ var data = node.data; var length = data.length; for(var poi = 0; poi < length; poi++){ var child = data[poi]; // console.log(child.poiName+"," +child.id); // if (poi < 3){ getStoreDetail(poi, length, child.id, child.poiName); //} } } } function onStoreError(e){ console.log(e); console.log('onError'); } function getStore(){ xmlExportContent = []; xmlExportContent.push(['店铺名字', '指标名称', '当前', '7日对比', '行业对比']) console.log('req user'); var URL_STORE = 'https://shangoue.meituan.com/api/poi/poiList'; $.ajax({ type: "POST", url: URL_STORE, data: '', success: onStoreSuccess, error:onStoreError, dataType: 'json' }); } function onStoreDetailSuccess(step, total, text, storeID, storeName){ //console.log('onStoreDetailSuccess:'+text); var node = JSON.parse(text); var code = node.code console.log('onSuccess, code:'+code); if (code == 0){ var data = node.data; if (data != null) { var length = data.length; var storeDetailRows = []; for(var index = 0; index < length; index++){ var child = data[index]; var indexStr = child.index; var indexParsed = acceptDataNode(indexStr); if (indexParsed.length > 0){ var storeDetailRow = []; storeDetailRow.push(storeName+"("+storeID+")"); storeDetailRow.push(indexParsed); storeDetailRow.push(appendDateSuffix(indexStr, child.current)); storeDetailRow.push(appendDateSuffix(indexStr, child.ring)); storeDetailRow.push(appendDateSuffix(indexStr, child.peer)); storeDetailRows.push(storeDetailRow); // console.log(child.index+"," +child.current); } } } showProgress(storeDetailRows, step, total); } } function appendDateSuffix(index, val){ if (index.indexOf('RATE')>=0){ val = val + "%"; } return val; } function acceptDataNode(index) { switch (index){ case "FLOW_POI_EXPOSE_UV": return "曝光人数"; case "FLOW_HOME_PAGE_EXPOSE_RATE": return "入店转化率"; case "FLOW_SUBMITTED_HOME_PAGE_RATE": return "下单转化率"; default: return ""; } } function getStoreDetail(index, total, storeID, storeName){ // var storeID = '8346703'; // var storeName = '测试店铺'; // var storeParmas = 'cityIds=0&wmPoiId='+id; var URL_PREFIX = 'https://waimaieapp.meituan.com/igate/recoanalysis/flowAnalysisV4/recentDays/flowTransformation?acctId=69808847&source=0&recentDays=7'; var storeParmas = '&cityIds=0&wmPoiId='+storeID; var URL_DETAIL = URL_PREFIX + storeParmas GM_xmlhttpRequest({ method: "GET", url: URL_DETAIL, data: '', headers: { "Referer": "https://waimaieapp.meituan.com/igate/", "Content-Type": "application/x-www-form-urlencoded" }, onload: function(res){ if(res.status === 200){ // console.log('成功') //console.log(res); onStoreDetailSuccess(index, total, res.response, storeID, storeName); }else{ //console.log('失败') console.log(res) } }, onerror : function(err){ console.log('error') console.log(err) } }); } function showProgress(content, step, total){ var rows = content.length; for(var index = 0; index < rows; index++){ xmlExportContent.push(content[index]); } step = step + 1; var button = $("#yhplExport")[0]; button.innerText = "导出进度:"+step + "/ "+total; console.log(xmlExportContent); if (step >= total){ button.innerText = "下载Excel"; exportAsXLS(xmlExportContent); } } //segment excel function exportAsXLS(aoa){ var excelName = "流量分析.xlsx"; var sheet = XLSX.utils.aoa_to_sheet(aoa); //var sheet = XLSX.utils.aoa_to_sheet([[1,2,3,4]]); openDownloadDialog(sheet2blob(sheet),excelName); } function sheet2blob(sheet, sheetName) { sheetName = sheetName || 'sheet1'; var workbook = { SheetNames: [sheetName], Sheets: {} }; workbook.Sheets[sheetName] = sheet; // 生成excel的配置项 var wopts = { bookType: 'xlsx', // 要生成的文件类型 bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性 type: 'binary' }; var wbout = XLSX.write(workbook, wopts); var blob = new Blob([s2ab(wbout)], { type: "application/octet-stream" }); // 字符串转ArrayBuffer function s2ab(s) { var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; return buf; } return blob; } function openDownloadDialog(url, saveName) { if (typeof url == 'object' && url instanceof Blob) { url = URL.createObjectURL(url); // 创建blob地址 } var aLink = document.createElement('a'); aLink.href = url; aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效 var event; if (window.MouseEvent) event = new MouseEvent('click'); else { event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); } aLink.dispatchEvent(event); } //eng segment excel
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址