Передача переменной JS в HTML в Google Scripts - PullRequest
2 голосов
/ 10 октября 2019

Я пытаюсь изменить текст в HTML, который отправляется по электронной почте, в переменную JS, которую я определил. Важно, что я делаю это в Google Scripts и у меня есть 2 файла Code.gs & Email.html.

Кажется, что мой html не может получить доступ к переменной JS, но я не уверен, где я нахожусьидет не так здесь. Я ссылался на несколько похожих постов и пробовал разные способы, но не могу заставить его работать. Если бы у кого-то были предложения, это было бы замечательно.

Code.gs

var JSname;

function Email() {

  JSname = 'It works!'
  var theEmail = 'myemail@gmail.com';
  var theSubject = 'Email subject line';
  var template = HtmlService.createTemplateFromFile('Email');
  var message = template.evaluate().getContent();
  MailApp.sendEmail({ to: theEmail, subject: theSubject, htmlBody: message });
  return
}

Email.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <span id="HTMLname">[Text here]</span>
    <script type="text/javascript" src="Code.gs">
      document.getElementById("HTMLname").innerHTML = JSname;
    </script>
  </body>
</html>

1 Ответ

1 голос
/ 10 октября 2019

Проблема:

Вы используете переменную вне области видимости, простую как

Исправление:

Использование шаблона:

code.gs

function doGet(e) {
  var template = HtmlService.createTemplateFromFile('Index'); // Or whatever you have
  var JSname = 'It works!' // Ideally var names should start with lowercase

  template.JSname = JSname // This is the IMPORTANT change

  // Build and return HTML in IFRAME sandbox mode. (Copied from GS directly)
  return template.evaluate()
    .setTitle('Web App Window Title')
    .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

function Email() {
  var theEmail = 'myemail@gmail.com';
  var theSubject = 'Email subject line';
  var template = HtmlService.createTemplateFromFile('Email');
  var message = template.evaluate().getContent();
  MailApp.sendEmail({
    to: theEmail,
    subject: theSubject,
    htmlBody: message
  });
}
<!DOCTYPE html>
<html>

<head>
  <base target="_top">
</head>

<body>
  <span id="HTMLname"><?= JSname ?></span>
</body>

</html>

Источник: https://script.google.com/u/1/home/start

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...