AdWords
Сейчас в сети: 61
Сейчас в сети: 61
Советы и вопросы по использованию скриптов AdWords
Подсказки
star_border
Ответить

Скрипт замены названий авто и городов

Ведущий участник

Сразу уточню, что скрипт не для AdWords, а для Google Docs Sheets, но так как он помогает в работе при составлении объявлений, то решил выложить сюда. Если промахнулся темой, то прошу перенести в более подходящую.

О самом скрипте. Скрипт дополняет таблицы двумя функциями.

1. UP_FIRST(text) - меняет первую буквы на заглавную.
2. ChangeAuto(text)  - Заменяет слова в любом регистре на слова взятые из таблицы Google Docs Sheets, листа "auto" (Для городов меняем auto на city)
Например мы составляем заголовки и тексты объявлений и у нас есть в тексте ключи, допустим - запчасти на бмв.

Чтобы быстро поменять в нужных ячейках бмв на БМВ, bmw, audi ... на BMW, Audi ... создаем лист auto и в нем в колонку прописываем названия так, как нам нужно, чтобы они отображались в объявлениях:
БМВ

BMW
Audi
ВАЗ
ВАЗе

Лада
и т.д.
Если у нас заголовок в ячейке E1, то для ячейки F1  применяем формулу =ChangeAuto(E1)
В результате получаем не "запчасти на бмв" , а "запчасти на БМВ", при желании можно до или после или сразу применить другую функцию UP_FIRST(АдресЯчейки) - первая заглавная , будет "Запчасти на БМВ"

Все тоже самое можно применить и к городам - москва, спб, питер -> Москва, СПб, Питер. Просто подготавливаем один раз таблицу с городами.


1 Ответ экспертаverified_user

Утвержденные решения
Лучший ответ.
Решение
Утвердил автор темы Андрей Москалец
октября 2015

Re: Скрипт замены названий авто и городов

Ведущий участник
var AutoArr=AutoList();
var lowerAuto=toLowerArray(AutoArr);

function ChangeAuto(text) {
//Меняем написание авто на то, как оно написано в таблице
if (text === undefined) {
text = 'Сколько стоит замена колодок на бмв';
}

var TextArr=text.split(' ');


TextArr.forEach(function(item, i, TextArr) {
id=lowerAuto.indexOf(item.toLowerCase());
if (id!=-1){
TextArr[i]=AutoArr[id][0];
}
});
return TextArr.join(' ');

}

function AutoList() {
//получаем данные из таблицы и возвращаем массив
//задаем адрес документа и лист таблицы
//Убираем комментарии ниже, если таблица в другом документе (возможны пляски с бубном и доступом)
//var autoTableIDLink="1f7-p1NHg-llHnQsMPCEPpB2cH7oH-IY_9SQKZkfgs4Q";
//var Spreadsheet = SpreadsheetApp.openById(autoTableIDLink);
var dbSheetName = "auto";
var Spreadsheet = SpreadsheetApp.getActive();
var sheet = Spreadsheet.getSheetByName(dbSheetName).activate();
var range = sheet.getDataRange();
var values = range.getValues();
return values;
}


function toLowerArray(arr) {
//меняем регист у всех элементов массива
var temp = arr.join(' ');
return temp.toLowerCase().split(' ');
}

/**
 * Функция меняет первую букву в строке на заглавную.
 * Возврящает of Strings.
 *
 * @param {String} test Входная строка.
 * @return {String} Результат.
 * @customfunction
 */
function UP_FIRST(text) {
  if (text.length>0) {
  text=text.substring(0,1).toUpperCase()+text.substring(1,text.length-1);
  }
 
  return text;
}

 

Просмотреть решение в исходном сообщении


Все ответы
Лучший ответ.
Решение
Утвердил автор темы Андрей Москалец
октября 2015

Re: Скрипт замены названий авто и городов

Ведущий участник
var AutoArr=AutoList();
var lowerAuto=toLowerArray(AutoArr);

function ChangeAuto(text) {
//Меняем написание авто на то, как оно написано в таблице
if (text === undefined) {
text = 'Сколько стоит замена колодок на бмв';
}

var TextArr=text.split(' ');


TextArr.forEach(function(item, i, TextArr) {
id=lowerAuto.indexOf(item.toLowerCase());
if (id!=-1){
TextArr[i]=AutoArr[id][0];
}
});
return TextArr.join(' ');

}

function AutoList() {
//получаем данные из таблицы и возвращаем массив
//задаем адрес документа и лист таблицы
//Убираем комментарии ниже, если таблица в другом документе (возможны пляски с бубном и доступом)
//var autoTableIDLink="1f7-p1NHg-llHnQsMPCEPpB2cH7oH-IY_9SQKZkfgs4Q";
//var Spreadsheet = SpreadsheetApp.openById(autoTableIDLink);
var dbSheetName = "auto";
var Spreadsheet = SpreadsheetApp.getActive();
var sheet = Spreadsheet.getSheetByName(dbSheetName).activate();
var range = sheet.getDataRange();
var values = range.getValues();
return values;
}


function toLowerArray(arr) {
//меняем регист у всех элементов массива
var temp = arr.join(' ');
return temp.toLowerCase().split(' ');
}

/**
 * Функция меняет первую букву в строке на заглавную.
 * Возврящает of Strings.
 *
 * @param {String} test Входная строка.
 * @return {String} Результат.
 * @customfunction
 */
function UP_FIRST(text) {
  if (text.length>0) {
  text=text.substring(0,1).toUpperCase()+text.substring(1,text.length-1);
  }
 
  return text;
}