#html #google-apps-script #html-parsing
#HTML #google-apps-script #html-синтаксический анализ
Вопрос:
Моя цель — создать программу, которая будет захватывать таблицы, полученные через gmail, и добавлять их в существующую таблицу Google.
Первая часть проекта заключается в получении таблиц из gmail; поэтому я написал следующий код:
function getEmail (){
var labels = GmailApp.getUserLabelByName('test');
var threads = labels.getThreads();
for(var x=0;x<threads.length;x ){
var msg = threads[x].getMessages();
for(var i=0;i<msg.length;i ){
var subject = msg[i].getBody();
var date = msg[i].getDate();
// var xml = subject "</meta>" ;
// var xml = "<root>" subject "</root>" ;
var doc = XmlService.parse(subject);
var content = doc.getAllContent();
Logger.log(date)
Logger.log(content)
}
}
}
Ошибка, которую я получаю, выглядит следующим образом:
Exception: Error on line 32: The element type "meta" must be terminated by the matching end-tag "</meta>".
getEmail @ Code.gs:11
Я нашел решение либо: добавление конечного тега ‘ ‘, либо добавление ‘/’ к тегу заголовка. Как я могу выполнить любой из них?
Это текущий HTML-мета-тег для всех возвращаемых сообщений:
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta content="en">
Обновить-
Я попытался использовать библиотеку синтаксического анализа html GOS; но я получаю ту же ошибку.
Мне нужно руководство о том, как найти мета-теги и изменить их.
Спасибо!
Комментарии:
1. Похоже, у вас отсутствует открывающий
<meta>
тег2.
XmlService.parse
Скрипт Google Apps работает плохо. Вам следует подумать о том, чтобы i) использовать синтаксический анализатор libray, ii) создать свой единственный синтаксический анализатор или iii) извлечь с помощью регулярного выражения3. Проверьте библиотеку Cheerio для GAS.
4. Мне не хватает закрывающего тега </meta>. Но это не требуется в HTML. Итак, я имею в виду, что мне нужно добавить: 1) закрывающий мета-тег, 2) ‘/’ к открывающему тегу, поскольку <meta/> является приемлемым
5. Я использовал другую библиотеку синтаксического анализатора (Gas); и я получаю ту же ошибку. Таким образом, это все еще указывает на необходимость добавления закрывающего мета-тега к html-объекту