为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 html 电子邮件内容中显示通过 JS 获取的月份。?

如何在 html 电子邮件内容中显示通过 JS 获取的月份。?

代码.gsfunction showMonth() {  var recipient1 = 'user@gmail.com';  var subject = "email subject";  // send email using html page  var emailTemplate = HtmlService.createTemplateFromFile('file');  MailApp.sendEmail(recipient1, subject,'',{'htmlBody': emailTemplate.evaluate().getContent(), 'cc': '', 'bcc': ''});}文件.html<!DOCTYPE html><html><head>    <base target="_top">  </head><body>    <h2>My First Web Page</h2>    <p>My First Paragraph.</p>    <p id="displaymonth"> </p><script>    var d = new Date();    var mnth = getMonthDetails();    function getMonthDetails() {      switch (d.getMonth()) {            case 9 :             return "October";        break;    }  document.getElementById("displaymonth").innerHTML = "Current month is " + mnth;</script></body></html> 电子邮件输出:My First Web PageMy First Paragraph.我试图在 JS 脚本标签中获取日期和月份,并将它们发布到 HTML 内容中。稍后使用 Google Apps Script 的电子邮件模板服务获取相同的 HTML 内容,并向用户发送电子邮件以显示当前月份。当我在jsfiddle.net等其他在线编辑器上运行代码时,它会在结果页面上显示月份的详细信息。但是,在 Google Apps 脚本上运行代码后,我无法在电子邮件中获得预期的结果。让我知道一种修复我的代码以查看预期结果的方法。谢谢!
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

这样您的电子邮件和您的 web 应用程序获得相同的内容


大多数内容来自一个用 html 编写的文本文件。然后在函数中,getContents()我在其中添加了带有月份的行。该函数为 doGet() 和 sendEmail() 提供内容。


aq1.gs


function getContents() {

  var folder=DriveApp.getFolderById('folderId');

  var file=folder.getFiles().next();//assume only one

  var contents=file.getBlob().getDataAsString()+Utilities.formatString('<p>This month is %s</p>',Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"MMMM" ));//get content from file and append the date to it as a string

  return contents;

}


function sendEmail() {

  var recipient1 = 'recipient email';

  var subject = "Combining Email and Website Contents";

  var html=getContents();

  MailApp.sendEmail(recipient1, subject,'',{htmlBody:html});

}


function doGet() {

  return HtmlService.createHtmlOutputFromFile('aq5');

}


function launchDiaog() {

  var userInterface=HtmlService.createHtmlOutputFromFile('aq5');

  SpreadsheetApp.getUi().showModelessDialog(userInterface, "My Dialog");

}

aq5.html:


<!DOCTYPE html>

<html>

  <head>

  <base target="_top">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

  <script>

    $(function() {

      console.log('Ready State Function');

      google.script.run

      .withSuccessHandler(function(hl){

        console.log(hl);

        $('#mydiv').html(hl);

      })

      .getContents();

    });

    console.log("My Code");

  </script>

  </head>  

  <h1>Testing</h1>

  <div id="mydiv"></div>

</html>

这是 ascii 文本文件的内容:


<h2>My First Web Page</h2><p>My First Paragraph.</p><p>My second paragrah</p>


但它可以是任何高达 50MB 的东西


查看完整回答
反对 回复 2021-12-12
?
四季花海

TA贡献1811条经验 获得超5个赞

尝试获取应用程序脚本上的日期,然后将其作为变量传递到您的 HTML 文件中。我认为您的客户端 js 代码不会由 Apps 脚本执行。


查看完整回答
反对 回复 2021-12-12
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信