Как сохранить разметку HTML как есть в ячейке Google sheet без нарушения тега html

#html #google-apps-script #google-sheets #google-apps #google-sheets-formula

#HTML #google-apps-script #google-sheets #google-приложения #google-sheets-formula

Вопрос:

Я пытаюсь использовать Google Sheet для добавления полного HTML-кода электронного письма в ячейку, где у меня есть переменные для текста, src изображения, src href и т.д.

Теперь я использую Google script для замены тегов значениями, чтобы я мог скопировать полный HTML-код и вставить его в систему маркетинга по электронной почте.

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

Но, я заметил, когда я вставляю разметку шаблона HTML в ячейку, таблица Google добавляет дополнительный набор "" вокруг существующего "" .

Например, если это HTML, который я вставляю:

 <!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>
<p>My first paragraph.</p>
<a href="https://www.Google.com">Visit Google</a>


</body>
</html>
  

Это будет изменено на это:

 <!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>
<p>My first paragraph.</p>
<a href=""https://www.Google.com"">Visit Google</a>


</body>
</html>
  

УВЕДОМЛЕНИЕ:

 <a href="https://www.Google.com">Visit Google</a>
  

Google Sheet добавляет дополнительный параметр ok "" вокруг моего href src. Та же проблема со всеми тегами.

 <a href=""https://www.Google.com"">Visit Google</a>
  

Меня беспокоит, может ли Google sheet поддерживать html как есть в ячейке или нет? Есть решение этой проблемы?

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

1. 1. Используйте одинарные кавычки. 2. Почему бы напрямую не вставить это в редактор сценариев в виде HTML-файла?

2. Потому что я создаю этот лист, чтобы пользователям было легко редактировать содержимое в HTML. Кто может просто добавить значения в переменную, и при нажатии кнопки мой скрипт заменит переменную значениями в HTML.

3. Использование редактора сценариев не решит проблему, которую я пытаюсь решить.

4. developers.google.com/apps-script/reference/html/html-template

5. Привет @TheMaster, я не уверен на 100%, как использовать html-шаблон из документа. Есть ли какой-либо пример / шаги для подражания? Просто к вашему сведению.. Я не пытаюсь сконструировать HTML, у меня уже есть HTML полного шаблона электронной почты. Просто пытаюсь найти простой способ для пользователей добавлять значения в переменные в Google Sheet, и скрипт button выполнит скрипт, который найдет переменные в HTML-коде и заменит его. Таким образом, пользователи могут вставлять новый обновленный HTML-код и использовать его в системе маркетинга по электронной почте.

Ответ №1:

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

 //Just enter the strings shown below into those cells in Sheet1 which no quotations and then run the script and you'll see your html
//A1=My First Heading
//A2=My first paragraph.
//A3=http://google.com
//A4=Visit Google

function displayEmailHtml() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getRange(1,1,4,1);
  var vA=rg.getValues();
  var html=Utilities.formatString('<!DOCTYPE html><html><body><h1>%s</h1><p>%s</p><a href="%s">%s</a>/body></html>',vA[0][0],vA[1][0],vA[2][0],vA[3][0]);
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'My Email Html');
}
  

Чтобы ответить на ваш второй вопрос, попробуйте это:

 function displayEmailHtml() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getRange(1,1,4,1);
  var vA=rg.getValues();
  var html=Utilities.formatString('<!DOCTYPE html>n<html>n<body>n<h1>%s</h1>n<p>%s</p>',vA[0][0],vA[1][0]);
  html =Utilities.formatString('n<a href="%s">%s</a>n</body>n</html>',vA[2][0],vA[3][0]);
  html=html.replace(/>/g,'amp;gt');
  html=html.replace(/</g,'amp;lt');
  html=Utilities.formatString('<pre>%s</pre>',html);
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'My Email Html');
}
  

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

1. Привет, @Cooper, спасибо за код. Это действительно работает, и это здорово. В моем случае использования я не хочу получать выходные данные HTML. Я хотел бы отобразить необработанную разметку html после завершения обновления. Как мы можем это сделать?

2. Спасибо @Cooper за обновление. это работает, и это именно то, что я ищу. Вопрос к вам: В этом подходе мы следуем порядковому подходу, в котором 1-я переменная относится к 1-му значению ячейки, вторая переменная относится ко 2-му значению ячейки и так далее… Возможно ли назначить переменные типа «heading1», «href_url», «button_text» и т.д.? Второй вопрос: откуда это взялось «% s»? это где-то объявлено? почему «% s»?

3. Поскольку мы придерживаемся последовательного подхода, если у нас есть одна строка типа <a href="%s">%s</a> , будет ли этот подход очень точным и всегда ли заменять любую переменную, которая стоит первой, даже если у нас есть несколько переменных в одной строке?

4. Я также тестирую добавление всего шаблона электронной почты. Поскольку HTML-кода шаблона электронной почты довольно много по сравнению с одной строкой, на выходе получается только одна строка. Может потребоваться много работы, чтобы собрать весь html-шаблон в одном, и не уверен, сработает ли это, поскольку полный HTML-шаблон электронной почты может содержать много тегов, специальных символов и т.д. Ваши мысли? есть ли способ внести улучшения для поддержки полного шаблона электронной почты HTML?

5. Эйч @ Cooper, я вижу, вы обновили код, но заставить его работать с реальным шаблоном электронной почты может оказаться непростой задачей. Как этот подход будет работать с этим примером шаблона, который включает полную разметку HTML / CSS: https://www.w3schools.com/w3css/tryit.asp?filename=tryw3css_templates_cafe