// ==UserScript==
// @name 阿里巴巴国际站批量导出分配记录
// @namespace http://tampermonkey.net/
// @version 2.1.3
// @description 在询盘分配页面,搜索按钮后面插入一个下载按钮,点击可以从头开始记录每个客户的分配记录,最终输出成JSON文件自动下载。再结合Python程序生成Excel表格。
// @author Mike
// @icon http://is.alicdn.com/favicon.ico
// @match https://message.alibaba.com/message/*
// @grant GM_addStyle
// ==/UserScript==
'use strict';
var globalAllresult = [];
var downloaded = false;
var repeated = false;
// 下面这段代码生成下载方式
(function(console){
console.save = function(data, filename){
if(!data) {
console.error('Console.save: No data found!')
return;
}
if(!filename) filename = 'console.json'
if(typeof data === "object"){
data = JSON.stringify(data, undefined, 4)
}
var blob = new Blob([data], {type: 'text/json'}),
e = document.createEvent('MouseEvents'),
a = document.createElement('a')
//var text = await blob.text()
a.download = filename
a.href = window.URL.createObjectURL(blob)
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')
e = new MouseEvent ("click");
//e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null) !!!deprecated!!!
a.dispatchEvent(e)
}
})(console)
// 分配记录收集方法
function collectItems(){
var contactEmails = document.getElementsByClassName('contact-email');
var contactNames = document.getElementsByClassName('contact-name');
var assignContents = document.getElementsByClassName('assign-content');
var assignDates = document.getElementsByClassName('assign-date');
var assignTimes = document.getElementsByClassName('assign-time');
var productWrapprs = document.getElementsByClassName('product-wrappr');
var result=[];
for (var i = 0; i < contactEmails.length; i++) {
console.log(contactEmails[i].innerText,contactNames[i].innerText)
var url_pic = ''
if ("product-img" == productWrapprs[i].childNodes[0].classList.value){
url_pic = productWrapprs[i].childNodes[0].src
}
result.push({
'contactEmail':contactEmails[i].innerText,
'contactName':contactNames[i].innerText,
'assignContent':assignContents[i].innerText,
'assignTime':assignDates[i].innerText + ' ' + assignTimes[i].innerText,
'productWrappr':productWrapprs[i].innerText,
'url_pic':url_pic
});
}
return result;
}
//与元数据块中的@grant值相对应,功能是生成一个style样式
GM_addStyle('#down_contacts_btn{color:#fb7d3c;}');
//下载按钮的html代码
var down_btn_html = '<span>';
down_btn_html += '<a href="javascript:void(0);" id="down_contacts_btn" class="S_txt2" title="一直点击,直到翻页到最后一页,自动下载,若无效请刷新重试">导出分配记录</a>';
down_btn_html += '</span>';
var inner = document.createElement('span');
inner.innerHTML = down_btn_html;
//将以上拼接的html代码插入到网页标签中
var ul_tag = document.getElementsByClassName('search-box')[0].parentNode;
if (ul_tag) {
ul_tag.append(inner);
}
var btn = document.getElementById('down_contacts_btn');
btn.onclick = function(){
if (repeated) {
confirm('请刷新页面后重试');
return;
}
if(downloaded) {
repeated = true;
return;//防抖,防止多次下载,刷新重启
}
var nextBtns = document.getElementsByClassName('next-btn-helper');
var n = nextBtns.length-1;
if (nextBtns[n].innerText != '下一页') {
n = n-1;
}
console.log(nextBtns[n].innerText);
var nextBtn = nextBtns[n].parentNode
if(!nextBtn.disabled) {
console.log('next page');
let result = collectItems();
globalAllresult.push(result);
nextBtn.click();
}else{
console.log('page end');
let result = collectItems();
globalAllresult.push(result);
globalAllresult = [].concat(...globalAllresult);
console.save(globalAllresult,"Inquiry&TM.json");
downloaded = true;
}
// 下载数据,第一个参数是数据对象,第二个参数是要保存成文件的名字。
}
版权属于:
admin
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)