По большому счёту тут оптимизация может быть по размеру кода - заменить циклом повторяющиеся участки кода.
И не надо выводить каждую строку при расчёте. Формируйте 2D массив (массив массивов) и в самом конце его выводите.
function getRoyalToysAll(url) {
let xml = UrlFetchApp.fetch(url).getContentText();
let document = XmlService.parse(xml);
let root = document.getRootElement();
let entries = root.getChildren('shop');
let long = entries[0];
let offers = long.getChild('offers').getChildren('offer');
let outData = [];
for (offer of offers) {
let id = offer.getAttribute('id').getValue();
let available = offer.getAttribute('available').getValue();
let price = offer.getChild('price').getValue();
//let stock_quantity = offer.getChild('stock_quantity').getValue();
let description = offer.getChild('description').getValue();
let brend = offer.getChild('brend').getValue();
let currencyId = offer.getChild('currencyId').getValue();
let categoryId = offer.getChild('categoryId').getValue();
let name = offer.getChild('name').getValue();
let vendorCode = offer.getChild('vendorCode').getValue();
let pictures = offer.getChildren('picture').map(el=>el.getValue());
pictures.length=6;
let params = [];
for (let pi=1; pi<=20; pi++){
let param = offer.getChild('param'+pi);
let data = param?[param.getAttribute('name').getValue(),'',param.getValue()]:['','',''];
params.push(...data);
};
let row = [id, available, price, description, brend, currencyId, categoryId, ...pictures, name, vendorCode, ...params];
outData.push(row);
}
return outData;
};
function test_getRoyalToysAll(){
const url = "https://royaltoys.com.ua/my/export/82f668de-8f05-478e-86f3-34224286999c.xml";
const sheetName = "Лист1";
let outData = getRoyalToysAll(url);
const outRange = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName(sheetName)
.getRange(1,1,outData.length, outData[0].length);
outRange.setValues(outData);
};
Ограничение по времени можно обойти, поместив функцию в диалоговое окно.
Ещё возможно сократить перебор
param, если они идут по порядку. Если текущий пустой - то следующие не смотреть.