Скрипт на app script

1 500 руб. за проект
10 марта 2023, 10:02 • 3 отклика • 39 просмотров
Размеры продуктов нужно перенести из Products -> Catalog.

Цикл по листу Products по колонке Barcode каждый Barcode ищется в аналогичной колонке Catalog, и копируются значения Box type, L , W, H
Необходимо сделать 2 опции в скрипте:

Опция 1. Ищется баркод в Catalog, если значения пусто в колонках Box type, L , W, H , то копируется. Если уже есть значения то не обновлять.
Опция 2. Всегда обновлять значения в этих колонках, вне зависимости есть ли там значения или нет.

После переноса каждого баркода, в исходный таблице Products необходимо добавлять пометку что баркод перенесен, в доп колонке. Чтобы в следующий раз, когда скрипт запускался, в данной таблице Products были взяты только не перенесенные Barcode.

В случае если баркод не найден в Catalog нужно добавить его ниже, и также повторить все опции выше.
Предпочтительно сделать на app script(Ниже пример начала), но обсуждаемо, если в другом варианте будет выполняться значительно быстрее . В Catalog порядка 3000 строк, в Products обычно в день добавляется 30-40 новых строк, время выполнения скрипта желательно не более 5-7 мин при переносе 30-40 баркодов.

function importData() {
var sourceSheetId = "10cEdEiupm7niwl3GoHTst1P22tV1-JnyLBzzRlFPXy8";
var sourcesheetName = "Slack_dim";

var destinationSheetId = "1rDxcPC_QZPrtIOansZzff1-Gz8FHTi7jhTSF4sk2Yzs";
var destinationSheetName = "01 - Catalog.com";
var sourceSheet = SpreadsheetApp.openById(sourceSheetId).getSheetByName(sourcesheetName);

var data = sourceSheet.getDataRange().getValues();

var destinationSheet= SpreadsheetApp.openById(destinationSheetId).getSheetByName(destinationSheetName);
var data_source = destinationSheet.getRange(2, 2, 10).getValues();
// // for (var i = 0; i < data.length; i++) {
var barcode = data[1][1] ;
var matchrow = data_source.findIndex(([r]) => r == barcode)
// }
Logger.log(matchrow)
}