Я могу обрезать свой 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);
}
Метод 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());
Извините, если я неправильно понимаю ваш вопрос.