Сценарий Google Apps с динамически маркированным списком в html-файле из Gsheet

#javascript #html #variables #google-apps-script #bulletedlist

#javascript #HTML #переменные #google-apps-script #маркированный список

Вопрос:

Я хотел бы создать динамически маркированный список в html-файле из Google apps-script с переменной. и для этого я хотел бы получить некоторую помощь, поскольку я действительно новичок в этом. в этот момент электронная почта отправляется по электронной почте как фиксированные переменные op [x], поэтому, если они пусты, у меня есть пустой маркированный список.

У меня есть функция, вызываемая luli у меня есть переменные в операции вызова массива, которые должны быть маркированным списком на самом деле я также создал счетную переменную из их суммы

luli.gs

 function luli() {
  var emailTemp = HtmlService.createTemplateFromFile('INTERVENTION-EMAIL');
  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template Creation');
  // for bulleted list
  var operation = ws.getRange('B27:B32').getValues();
  var i = ws.getRange('$B$33').getValue();
  // used at the moment
  var op1 = wsSettings.getRange('$B$27').getValue();
  var op2 = wsSettings.getRange('$B$28').getValue();
  var op3 = wsSettings.getRange('$B$29').getValue();
  var op4 = wsSettings.getRange('$B$30').getValue();

  //email variables used at the moment
  emailTemp.op1 = op1;
  emailTemp.op2 = op2;
  emailTemp.op3 = op3;
  emailTemp.op4 = op4;

  var htmlMessage = emailTemp.evaluate().getContent();

  GmailApp.createDraft(
    mail,
    sujet,

    //send  message generated htmlbody amp; htmlmessage built.
    { name: nom, htmlBody: htmlMessage, cc: cc, from: from },
  );
}
 

У меня есть шаблон электронной почты под названием intervention-email

intervention-email.html

 <p dir="ltr">
  <span style="font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif"
    ><?= corps1 ?></span
  >
</p>
<ul style="list-style-type: square">
  <li dir="ltr">
    <span
      style="
        font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif;
        font-size: 10pt;
      "
      ><?= op1 ?></span
    >
  </li>
  <li dir="ltr">
    <span
      style="
        font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif;
        font-size: 10pt;
      "
      ><?= op2 ?></span
    >
  </li>
  <li dir="ltr">
    <span
      style="
        font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif;
        font-size: 10pt;
      "
      ><?= op3 ?></span
    >
  </li>
  <li dir="ltr">
    <span
      style="
        font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif;
        font-size: 10pt;
      "
      ><?= op4 ?></span
    >
  </li>
</ul>
<p>amp;nbsp;</p>
 

Было бы неплохо иметь код, генерирующий маркированный список li в соответствии с информацией, содержащейся в переменной operation, а затем заполняющий список адресов электронной почты.
Спасибо за вашу помощь.

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

1. Можете ли вы более подробно объяснить, где именно вы испытываете трудности и нуждаетесь в помощи? В чем проблема с вашим кодом, как он есть?

2. У меня есть статический html-код li, каждый li является переменной от op1 до op4, если у меня есть все из них, это хорошо, потому что он заполняет их все. Но если у меня есть только один, у меня есть 3 пустых маркера. Будет лучше, если я смогу сгенерировать нужное количество маркеров с помощью правильных операций. может быть, имея цикл для каждого или что-то подобное? Спасибо

Ответ №1:

Вы можете поместить свои переменные в массив (или напрямую получить их в виде массива), а затем передать массив в шаблон

Пример

Code.gs

 ...
var values = wsSettings.getRange('B27:B30').getValues().flat();
emailTemp.options = values;
var htmlMessage = emailTemp.evaluate().getContent();
...
 

intervention-email.html

 ...
<ul style="list-style-type: square">
<? for (var i = 0; i < options.length; i  ) { ?>
  <li dir="ltr">
    <span style="font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: 10pt;">
      <?= options[i] ?>
    </span>
  </li>
<? } ?>
</ul>
...
 

Смотрите документацию.

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

1. Parfait ! это работает, спасибо за ваш быстрый ответ!

2. Я забыл сказать, что в вашем предложении «for» есть ошибка опечатки, переменная только «i», «j» не ожидается.

3. Извините за опечатку, я отредактировал ее в своем ответе!

4. Без проблем, я использую код, и хорошо, что он работает!