Я пытаюсь извлечь информацию из Gmail в таблицу Google. Информация в электронном письме имеет структуру таблицы со следующими столбцами: Список продуктов, Количество проданных товаров и Промежуточный итог для каждого продукта. Они повторяются N раз.
При доступе к информации с использованием message.getPlainBody()
я получаю следующий текст:
Product
Quantity
Price
Chocolate
1
$8.58
Apples
2
$40.40
Bananas
1
$95.99
Candy
1
$4.99
Subtotal:
$149.96
Прогресс
Сначала я попробовал использовать регулярное выражение для идентификации каждой строки со всеми его элементами:
- Название продукта: любое количество символов, которые не включают ':' (. *) [^:]
- Кол-во Продано: Любое число \ d *
- Все, что выглядит как подытог [$] \ d *. \ D *
Оборачивая все, это выглядит так
function ExtractDetail(message){
var mainbody = message.getPlainBody();
//RegEx
var itemListRegex = new RegExp(/(.*)[^:][\r\n]+(\d*[\r\n]+[$](\d*\.\d*)[\r\n]+/g);
var itemList = mainbody.match(itemListRegex);
Logger.log(itemList);
}
И пока все работает:
itemList: Шоколад 1 $ 8,58, Яблоки 2 $ 40,40, Бананы 1 $ 95,99 , Candy 1 $ 4.99
Однако я получаю следующий результат:
- [Шоколад 1 $ 8.58]
- [Яблоки 2 $ 40.40]
- [Бананы 1 $ 95,99]
- [Конфеты 1 $ 4,99]
Вместо:
- [Шоколад] [1] [$ 8,58]
- [Яблоки] [2] [40,40 $]
- [Бананы] [1] [95,99 $]
- [Конфеты] [1] [$ 4.99]
Вопрос
Мой вопрос: как я могу добавить новую строку в как каждая строка соответствует каждому найденному совпадению и что каждый столбец соответствует каждому свойству?
Как превратить результат каждого совпадения в массив? Возможно ли это или я должен изменить свой подход?
Обновление:
Поскольку результатом моей текущей попытки является большая строка, я пытаюсь найти другие варианты. Это всплыло:
var array = Array.from(mainbody.matchAll(itemListRegex), m => m[1]);
Источник: Как получить доступ к соответствующим группам в регулярном выражении JavaScript?
Я все еще работаю над этим , Мне все еще нужно найти, как добавить больше столбцов, и по какой-то причине он начинается с «Яблоки» (следуя примерам), оставляя после себя «Конфеты».
Журнал:
Logger.log('array: ' + array);