Примерно так должен выглядеть юзерскрипт(без прокликивания, ибо там многое зависит от раелизации):
var d = document;
var text = 'textContent' in d.body ? 'textContent' : 'innerText';
var forEach = Array.prototype.forEach;
var hash = {};
var fixedDiv = d.createElement('div');
fixedDiv.style.cssText = 'position:fixed;top:0;right:0;background:#fff;border:1px solid;z-index:99999';
var input = fixedDiv.appendChild( d.createElement('input') );
input.type = 'button';
input.onclick = readPage;
input.value = 'Считать артикулы со страницы.';
input = fixedDiv.appendChild( d.createElement('label') );
input.innerHTML = 'Загрузить таблицу:';
input = input.appendChild( d.createElement('input') );
input.type = 'file';
input.onchange = readTable;
input = fixedDiv.appendChild( d.createElement('input') );
input.type = 'button';
input.onclick = setData;
input.value = 'Внести данные из таблицы на страницу.';
var tableDiv = fixedDiv.appendChild( d.createElement('div') );
d.body.appendChild(fixedDiv)
function readPage(){
hash = {}; //очищаем список артикулов полученый с текущей страницы
forEach.call( d.querySelectorAll('.CoolGridViewTable.table td:first-child'), function(td){
//заполняем список артикулов текущей страницы
hash[td[text].trim()] = td.parentNode;
})
console.log(hash)
}
function readTable(){
var reader = new FileReader();
reader.onload = function(event) {
//считываем таблицу из файла
var contents = event.target.result.match(/<table[\s\S]+<\/table>/);
if(!contents) return console.error("Нет таблицы.");
//преобразуем в код и отображаем
tableDiv.innerHTML = contents[0];
};
reader.onerror = function(event) {
console.error("Файл не может быть прочитан! код " + event.target.error.code);
};
reader.readAsText(this.files[0]);
}
function setData(){
//проходимся по всем рядам загруженной таблицы
forEach.call( tableDiv.querySelectorAll('td:nth-of-type(3)'), function(td){
var rowTo = hash[td[text].trim()], //получаем ряд таблицы на странице с таким артикулом
rowFrom = td.parentNode;
if( rowTo ) { //если ряд с таким артикулом существует
var qty = parseFloat(rowFrom.cells[3][text]), //получаем кол-во в виде текста и преобразуем в число
price = parseFloat(rowFrom.cells[4][text].replace(/[,\s]+/g, '')); //получаем цену в виде текста, очищаем от запятых и преобразуем в число
rowTo.cells[1].click(); //кликаем по клетке дабы появились поля ввода
rowTo.querySelector('input[name="qty"]').value = qty; //вносим кол-во
rowTo.querySelector('input[name="price"]').value = price; //вносим цену
rowTo.querySelector('a').click(); //кликаем по первой ссылке
rowFrom.parentNode.removeChild(rowFrom); //удаляем из загруженной таблицы отработанную строку(если какие строки остались - значит такой артикул не найден)
}
})
}
Могут быть всякие подводные камни связанные с задержками.
По хорошему конечно надо просить это всё сделать разработчиков ваших, через внутреннюю систему.)