@a9i3

Как при создании строки удалять ненужный символ в ячейке заданного столбца?

У меня автоматически создаются строки с контактами на листе. И в столбце H:H, где встает номер телефона, некоторые номера приходят с "+". Из-за этого в ячейке пишется #ОШИБКА!

Помогите написать функцию через google scripts, где при создании новой строки автоматически ищет "+" в столбце H:H и заменяет его на "" (удаляет).
  • Вопрос задан
  • 80 просмотров
Решения вопроса 2
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Если при вводе руками, то можно использовать такой код

const isFormula_ = value => String(value).charAt(0) === '=';
const editValue_ = value => isFormula_(value) ? String(value).substring(1) : value;

function onEdit(e) {
  const sheet = e.range.getSheet();
  if (
    sheet.getName() === 'Пример' && 
    e.range.getRow() > 1 && 
    e.range.getColumn() === 8 && 
    isFormula_(e.value)) {
    e.range.setValue(editValue_(e.value));
  }
}


Пример в Таблице https://docs.google.com/spreadsheets/d/1qe4gHivzlO...
Ответ написан
ProgrammerForever
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
Поставьте текстовый формат в этом столбце
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@a9i3 Автор вопроса
//Функкция для изменения номера телефона  c "+1234567" на "1234567"
function changePhones(){
  //Имя листа для сохранения данных
  const nameConf = "listConf";
  //Имя листа с данными
  const nameData = "Лист1";

  //Номер колонки. У H - это 8
  const numColumn = 8;

  //Тут нужно указать url к вашей таблице
  const ss = SpreadsheetApp.openByUrl("url таблицы");

  //Пробуем получить лист
  let sheetConf = ss.getSheetByName(nameConf);

  //Если листа нет, то
  if(sheetConf== null){
    //Создаем лист с таким именем
    sheetConf = ss.insertSheet(nameConf);
    //Заполняем его полями
    sheetConf.getRange("A1").setValue("Последняя строка");
    sheetConf.getRange("B1").setValue(1);
  }
  
  //Начальная строка
  const startRow = sheetConf.getRange("B1").getValue();

  //Открываем лист с данными
  const sheetData = ss.getSheetByName(nameData);

  //Последняя заполненая строка
  const endRow = sheetData.getLastRow();

  //Проходим по всем нужным строкам
  for(let i = startRow; i <= endRow; ++i){
    let cell = sheetData.getRange(i, numColumn);
    //Считываем формулу
    let value = cell.getFormula();
    //Проверяем есть ли в начале номера +
    if(value.match(/^\+[0-9()-\s]+/g)){
      let str = value.replace(/[^0-9()-\s]/g,"");
      sheetData.getRange(i, numColumn).setValue(str);
    }
    
  }
  //Записываем данные о последней строке
  sheetConf.getRange("B1").setValue(endRow);
}


и создать тригер
6377235eaff3d325472920.png
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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