Замена диакритических знаков в массиве с помощью скрипта Google Apps - PullRequest
1 голос
/ 18 октября 2019

Мы пытаемся заменить все диакритические знаки на листе их более дружественными к базе данных аналогами. Я хочу иметь возможность применить найденное здесь решение ( Удалить акценты / диакритические знаки в строке в JavaScript ) к массиву.

Мы уже посетили тему "Удалить акценты /диакритические знаки в строке "Javascript", и решение отлично работает для одной ячейки. Однако, когда я пытаюсь сделать это с моим текущим кодом, он изменяет только одно значение и вставляет его во весь массив. Что я делаю не так?

(Остальной код виден в ссылке)

function removeDiacritics () {
  var range = "A2:B3";
  var array = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cleaner").getRange(range).getValues();
  var base = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cleaner").getRange(range);
  var newArray = [];

  for(var row=0;row<array.length;row++){
    for(var i=0;row<array[row].length;i++){

    var newText = array[row][i].replace(/[^\u0000-\u007E]/g, function(a){ 
      return diacriticsMap[a] || a;
    });
    newArray.push(newText);
  }
  }

      base.setValue(newArray);
}

1 Ответ

0 голосов
/ 21 октября 2019

Ответ:

Вы выполняете итерацию по неверной переменной счетчика во вложенном цикле.

Исправлено:

В вашем вложенном цикле вЧтобы изменить элемент сравниваемого массива, необходимо изменить:

for(var row=0;row<array.length;row++){
  for(var i=0;row<array[row].length;i++){
    // code
  }
}

на:

for(var row = 0; row < array.length; row++){
  for(var i = 0; i < array[row].length; i++){
    //code
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...