Трим и Чистый Google скрипт

1

Я могу обрезать свой dada со сценарием ниже

Но есть ли способ очистить данные в Google, используя скрипт Google, похожий на Clean in VBA?

т.е. удалить все непечатаемые символы

Я не могу найти-заменить на данные, скопированные и вставленные в GS из другого источника

Спасибо

function trimSpacesSHT(shtName) {
 var sheet = SpreadsheetApp.getActive().getSheetByName(shtName);
 var activeRange = sheet.getDataRange();

  // Read Height and Width only once
  var maxHeight = activeRange.getHeight();
  var maxWidth = activeRange.getWidth();

  // Read all values and formulas at once
  var rangeValues = activeRange.getValues();
 // iterate through all cells in the selected range
 for (var cellRow = 0; cellRow < maxHeight; cellRow++) {
    for (var cellColumn = 0; cellColumn < maxWidth; cellColumn++) {
    rangeValues[cellRow][cellColumn] = rangeValues[cellRow][cellColumn].toString().trim().replace(/\s(?=\s)/g,'');
  }
}
 // Write back all values at once
 activeRange.setValues(rangeValues);
}
  • 0
    Объясните, что вы пытаетесь сделать
  • 0
    Удалить все непечатаемые символы
Показать ещё 3 комментария
Теги:
google-apps-script
google-sheets

1 ответ

2
Лучший ответ

Метод CLEAN из VBA удаляет символы 0-31, 127, 129, 141, 143, 144, 157. Вы хотите добиться этого с помощью Google Apps Script? Если мое понимание правильное, как насчет этого сценария? Поскольку я был заинтересован в этом методе и хочу изучить об этом, я создал это.

Пример скрипта:

function cleanForGAS(str) {
  if (typeof str == "string") {
    var escaped = escape(str.trim());
    for (var i = 0; i <= 31; i++) {
      var s = i.toString(16);
      var re = new RegExp("%" + (s.length == 1 ? "0" + s : s).toUpperCase(), "g");
      escaped = escaped.replace(re, "");
    }
    var remove = ["%7F", "%81", "%8D", "%8F", "%90", "%9D"];
    remove.forEach(function(e) {
      var re = new RegExp(e, "g");
      escaped = escaped.replace(re, "");    
    });
    return unescape(escaped).trim();
  } else {
    return str;
  }
}

Использование:

Когда вы используете это, пожалуйста, измените свой сценарий.

От:

rangeValues[cellRow][cellColumn] = rangeValues[cellRow][cellColumn].toString().trim().replace(/\s(?=\s)/g,'');

Для:

rangeValues[cellRow][cellColumn] = cleanForGAS(rangeValues[cellRow][cellColumn].toString());

Ссылка:

Извините, если я неправильно понимаю ваш вопрос.

  • 0
    Спасибо, вы очень хорошо поняли
  • 0
    @xyz Добро пожаловать. Я рад, что ваша проблема была решена. И я мог бы также изучить ваш вопрос. И тебе спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню