NEW ANSWER
Хорошо, в этом случае я бы предложил использовать скрипт, чтобы получить столько SKU, сколько вы хотите. Сначала вы используете эту функцию для фильтрации O coulmn и получения вашего набора соответствия. Этот набор будет содержать счетчик, изначально установленный на 0.
function GetNSKUS() {
var ss =SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('PrepSheet');
//Building the matching set.
var matchingValues = ss.getRange("O2:O").getValues().filter(value => value[0] != '').map(nonBlankValue => [nonBlankValue[0], 0]);
//Filtering out the desired number of values
var values = sheet.getRange("LOCATIONS!$A$2:$C").getValues().filter(value => advancedFilter(value[0], matchingValues));
let cols = values[0].length;
let rows = values.length;
//Printing out the found rows starting from G2
sheet.getRange(2, 7, rows, cols).setValues(values);
}
Затем вы отфильтруете диапазон вашего РАСПОЛОЖЕНИЯ с помощью этой функции. Когда совпадение будет выполнено, счетчик будет увеличиваться, позволяя вам фильтровать до нужных значений.
function advancedFilter(value, toMatch) {
let matched = toMatch.filter(couple => couple[0] === value);
if (matched.length > 0) {
if (matched[0][1]<2) { //Here you can decide when to stop returning SKUs
matched[0][1] += 1;
return true;
}
}
return false;
}
СТАРЫЙ ОТВЕТ
Вы можете использовать ограничение, чтобы уменьшить вывод запроса. В вашем случае, если вы хотите вернуть только первые 2 строки, соответствующие вашему запросу, вы можете использовать следующее:
function PreparePrepPivotTable() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName('PrepSheet');
sheet.getRange('G2').activate().setFormula('=QUERY({\'LOCATIONS\'!$A$2:$C},"SELECT * WHERE Col1 MATCHES \'" & JOIN("|",FILTER(O2:O, NOT(ISBLANK(O2:O)))) & "\' LIMIT 2")');
}
Ссылки:
Limit