Как исправить ошибку в JS функции?

При выполнении вылетает ошибка: TypeError: Cannot read property 'replace' of null (строка 16,

Код:

var doc = SpreadsheetApp.getActiveSpreadsheet();
try {
    var s_settings = doc.getSheetByName("Settings");
    s_settings.clear();
}
catch(e) {
    var s_settings = doc.insertSheet();
    s_settings.setName("Feed");
}
function trim( str, charlist ) {
    charlist = !charlist ? ' \\s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}
function strip_tags( str ) {
    str = str.replace(/<style[^>]+>[^<]+<\/style>/gi, '');
    str = str.replace(/&nbsp;/gi, ' ');
    str = trim(str);
    return str.replace(/<\/?[^>]+>/gi, '');
}
function parseXml() {
    var url = 'https://mebelmassive.ru/index.php?route=extension/feed/yandex_yml';
    var xml = UrlFetchApp.fetch(url).getContentText();
    var document = XmlService.parse(xml);
    var root = document.getRootElement();
    var ns = XmlService.getNamespace('http://www.w3.org/1999/xhtml');
    Logger.log(ns);
    var entries = document.getRootElement().getChildren();
    Logger.log(entries);
    var orders = entries[0].getChildren('offers')[0].getChildren('offer');
    Logger.log(orders);
    var categories = entries[0].getChildren('categories')[0].getChildren('category');
    var aCategory = {};
    for (var i = 0; i < categories.length; i++) {
        var id = categories[i].getAttribute('id').toString().split("'")[1];
        var text = categories[i].getText();aCategory[id] = text;
    }
    var rows = [];
    rows.push(['id','link','item category','title','image_link','price', 'condition', 'availability', 'description']);
    for (var i = 0; i < orders.length; i++) {
        var id = orders[i].getAttribute('id').toString().split("'")[1];
        var url = orders[i].getChildText('url').toString().trim();
        var cat = aCategory[orders[i].getChildText('categoryId').toString()];
        var name = orders[i].getChildText('name');
        var pic = orders[i].getChildText('picture').toString().trim();
        var currencyId = orders[i].getChildText('currencyId').toString().trim();
        var price = orders[i].getChildText('price').toString()+' '+currencyId;
        var description = strip_tags(orders[i].getChildText('description'));
        var newRow = [id, url, cat, name, pic, price, 'new', 'in stock', description];
        rows.push(newRow);
    }
    Logger.log(rows[rows.length-1]);
    s_settings.getRange(1,1,rows.length, 9).setValues(rows);
}

Ответы (1 шт):

Автор решения: Алексей Шиманский

Ошибку исправить просто: надо подать на вход строку. А в функцию прилетает null. Как исправить null: смотрите почему у вас прилетает null на вход. Или хотя бы предусмотрите вариант, что если значение null, то передать пустую строку на вход, например

strip_tags(orders[i].getChildText('description') ?? '');

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

Также смотрите познавательную тему: Как и какими средствами находить ошибки в Javascript коде?

→ Ссылка