@Nicolayka

Как макросом убрать тире и пробел между цифр в Google Sheets?

Имеется столбец с телефонными номерами. Хотелось бы, что бы после ввода телефонного номера с тире (или пробелом), эти символы автоматически удалялись.

Сейчас использую такой скрипт
function onEdit(e) {
  if (e === undefined) return false; // если аргумент не определен, выходим
  
  const shName = 'Phones'; // имя контролируемого листа 
  const colNumber = 1; // номер колонки, где контролировать изменения
  const dateOffset = 12; // смещение, куда ставить дату

  var range = e.range;

  if (range.getSheet().getName() != shName | range.getColumn() != colNumber) return false;
 
  for (var i = 1; i <= range.getNumRows(); i++) { // перебираем все строки, где произошли изменения, в нужном столбце
    var cell = range.getCell(i,1);
    cell.setValue(cell.getValue().toString().replace(/[-\s]/g,"")); // удаляет все пробелы и тире 
    cell.offset(0,dateOffset).setValue(new Date()); // ставим дату
  }
}


Этот код отслеживает изменение ячейки в столбце А (1) и вводит дату в столбец М (12), но не убирает символы из телефонного номера в столбце H (8).

К тому же сейчас постоянно вылазит ошибка:
TypeError: Cannot read property 'getSheet' of undefined
at onEdit(OnEdit:10:13)
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Пытаетесь запустить это из редактора кода? Event-объект e получается undefined и код не работает.
И простой триггер не даст менять значения через setValue(). Меняйте название на onEditTrigger(), например, и ставьте полноценный триггер на редактирование.
Ну и ещё бы я не советовал перебирать строки и внутри делать для каждого setValue(). Получите все значения, поменяйте все значения, запишите все значения - так будет на порядок быстрее.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы