function doPost(e) {
var data = JSON.parse(e.postData.contents);
var text = data.message.text;
var id = data.message.chat.id;
var name = data.message.chat.first_name + " " + data.message.chat.last_name;
var answer = "Записано в гугл док";
sendText(id,answer);
SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(),id,name,text,answer]);
}
таким образом записываю с телеграмма сообщение в гугл таблицу. Сообщения приходят в таком виде:
Имя: юрий
Телефон: 899999
Почта: ya@yandex.ru
Выберите количество комнат: 1-комнатная
Выберите тип отделки: С отделкой
Желаемый способ оплаты: Рассрочка
Как можно обрезать текст и записать только все что находится после двоеточия (1-комнатная), строки Выберите количество комнат. Расположение строки по счету может меняться.
C регулярными выражениями не очень дружу, по этому прошу помощи
Вроде бы так
$str = 'Имя: юрий
Телефон: 899999
Почта: ya@yandex.ru
Выберите количество комнат: 1-комнатная
Выберите тип отделки: С отделкой
Желаемый способ оплаты: Рассрочка';
preg_match_all('{\b\pL+:\s*(.+)\b}u', $str, $arr);
var_dump($arr[1]);
В результате работы кода получится следующая строка:
array (size=6)
0 => 'юрий'
1 => '899999'
2 => 'ya@yandex.ru'
3 => '1-комнатная'
4 => 'С отделкой'
5 => 'Рассрочка'
Далее, если нужно полученный результат преобразовать в строку, и вывести в таблице (как на вашем скрине), то нужно использовать цикл
preg_match_all('{\b\pL+:\s*(.+)\b}u', $str, $arr);
$view = '<table border="1"><tr>';
foreach ($arr[1] as $string) {
$view .= "<td>$string</td>";
}
$view .= '</tr></table>';
echo $view;
$string = 'Имя: юрий
Телефон: 899999
Почта: ya@yandex.ru
Выберите количество комнат: 1-комнатная
Выберите тип отделки: С отделкой
Желаемый способ оплаты: Рассрочка';
preg_match_all('/\:\s(.*)/', $string, $matches);
echo var_dump($matches[1]);
Результат
array(6) {
[0]=>
string(9) "юрий"
[1]=>
string(7) "899999"
[2]=>
string(13) "ya@yandex.ru"
[3]=>
string(21) "1-комнатная"
[4]=>
string(20) "С отделкой"
[5]=>
string(18) "Рассрочка"
}
UPDATE
Посмотрел Google Apps Script. Оказывается там используется только RegExp.exec()
. А в RegExp.exec()
вы не можете получать все регулярное выражение одновременно. Вам понадобится добавить все отдельно!
function doPost(e) {
var data = JSON.parse(e.postData.contents);
var text = data.message.text;
var id = data.message.chat.id;
var name = data.message.chat.first_name + " " + data.message.chat.last_name;
var answer = "Записано в гугл док";
sendText(id, answer);
var fname = /Имя: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
var phone = /Телефон: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
var email = /Почта: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
var room = /Выберите количество комнат: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
var type = /Выберите тип отделки: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
var payment = /Желаемый способ оплаты: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(), id, name, answer, fname, phone, email, room, type, payment]);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Подскажите, как в amCharts(на графике) сделать вертикальный зум, при нажатии Ctrl+scrollЕсть метод, в котором можна установить зум по-дефолту
Вот задание : Напишите функцию pow(x,n) , которая возвращает x в степени nИначе говоря, умножает x на себя n раз и возвращает результат
Нужно если text-box пустой или вводит неправильно значение, вывести сообщение об ошибке и выделить его краснымСообщение выводится, то что text box пустой
Подскажите, что я делаю не так? Или посоветуйте, как нужно делатьИмеем структуру расширения: