Google Appscript Перечисляет элементы массива с маркерами и подписью

#javascript #google-apps-script #google-sheets

Вопрос:

Я хотел бы получить некоторую помощь в том, как перечислить элемент массива с электронными письмами в качестве элементов (и динамической длины) при извлечении фамилий. Я не совсем уверен в правильном коде, но у меня есть общее представление о том, как это сделать. Вот пример кода:

 var arrayEmail = [john.doe@gmail.com, jane.clark@gmail.com];
var regTest =new RegExp(/.(w )@/);
var newArray = arrayEmail.map(function(e) {'• '   regTest.exec(value)});
var namesList = newArray.join('n');

Logger.log(namesList);
 

Я знаю, что код не включает заглавную букву, так как я еще не знаком с этим. Мой предполагаемый результат будет текстовой переменной и будет выглядеть так.

 • Doe
• Clark
 

Или список с пронумерованными элементами (хотя я также не знаком с тем, как добавлять увеличивающиеся числа с помощью массивов с динамическими размерами).

 1. Doe
2. Clark
 

Комментарии:

1. Будет ли электронное письмо всегда содержать . разделитель имени и фамилии?

Ответ №1:

Попробуйте это:

 function moot() {
  const array = ['john.doe@gmail.com', 'jane.clark@gmail.com'];
  const lastnames = array
    .map(email =>
      String(email)
        .replace(/^w ./, '')
        .replace(/@. $/, ''))
    .filter(String);
  const result = lastnames
    .map(name => name[0].toUpperCase()   name.slice(1))
    .map((name, index) => (index   1)   '. '   name)
    .join('n');
  console.log(result);
}
 

Непонятно, зачем вам нужно было бы делать это в сценарии приложений, когда, вероятно, было бы намного проще с простой формулой ванильной таблицы regexreplace() с использованием proper() и.

Комментарии:

1. Почему ^w используется для записи имени в электронном письме? Когда я протестировал код, удаление символа ^ в замене кода(/^w ./, «) дало те же результаты. Также переменная «email» и «имя», как я полагаю, обозначает элемент массива? Не нужно ли объявлять переменные при использовании встроенных функций?

2. Кроме того, поскольку я не могу отредактировать комментарий, почему строка используется в фильтре(Строка). Разве метод filter() не принимает элементы или функции в качестве аргумента?

3. Это ^ означает начало текстовой строки. Он используется здесь для защиты от текстовых строк, которые не начинаются с буквы или цифры, т. е. не являются адресами электронной почты. email и name обозначьте параметр элемента двух встроенных функций, и они не требуют объявлений. filter(String) Шаблон отсеивает текстовые строки нулевой длины.

Ответ №2:

Посмотрим, поможет ли это

 function listNames () {
const arrayEmail = ["john.doe@gmail.com", "jane.clark@gmail.com"];
const namesList = arrayEmail.map( e  => "• "   toTitleCase(e.split("@")[0].split(".")[1])).join("n");
Logger.log(namesList);
}

function toTitleCase(str) {
    return str.replace(/wS*/g, function (txt) {
        return txt.charAt(0).toUpperCase()   txt.substr(1).toLowerCase();
    });
} 

Комментарии:

1. Привет. Может возникнуть вопрос, для чего это g в шаблоне регулярного выражения /wS*/g. Это для g в gmail? Я думал, что шаблоны регулярных выражений в скрипте приложения Google обозначаются / (как в /RegExp/), поэтому, в моем понимании, это выходит за рамки регулярного выражения.

2. Модификатор » g » используется для выполнения глобального сопоставления (поиска всех совпадений, а не остановки после первого совпадения).