Passing js Variable to html file GAS - BASIC

我的未来我决定 提交于 2019-12-01 09:20:48

Read this, pushing variables to templates

 function doGet() {
    return HtmlService.createHtmlOutputFromFile('Index');
    }

    function sendEmail() {
    var ss = SpreadsheetApp.openById('MY_SPREADSHEET_ID');
    var sheet = ss.getSheetByName('Sheet1');

    var myName = sheet.getRange(1,1).getValue();

    var template = HtmlService.createTemplateFromFile('Index');
    template.data = myName;
    var body = template.evaluate().getContent();

    // SEND THE EMAIL
    MailApp.sendEmail({
      subject:"Test Email",
      to:"example@domain.com",
      htmlBody: body,
});

Index.html

<!DOCTYPE html>

<html>  
  <body>
  <p><strong><?= data ?></strong></p>
  </body>
</html>

The question was still open when I found it and I had a similar problem, so here is my solution (without doGet()), based on the useful comments from Wim den Herder and Rubén (and the example in the documentation):

Code.gs

function sendEmail() {
var recipient = 'test@mail.de';
var subject = 'Test Email'; 
var message =     HtmlService.createTemplateFromFile('Index').evaluate().getContent();;


// SEND THE EMAIL 
GmailApp.sendEmail(
      recipient,         
      subject,                            
      message, {                        // body
      htmlBody: message                 // advanced options
    });

}

function getData(){
var ss = SpreadsheetApp.openById('MySpreadSheetId');
var sheet = ss.getSheetByName('Sheet1');
// Data is in cell A1
var myName = sheet.getRange(1,1).getValue();
return myName
}

Index.html

<!DOCTYPE html>

<html>  
  <body>
  <p><strong><? var data = getData() ?><?= data ?></strong></p>
  </body>
</html>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!