如何在Google Apps脚本中使用HTML格式发送批量电子邮件

时间:2019-04-24 16:22:54

标签: javascript html google-apps-script google-sheets

几个月前,在人们回复我的帖子的帮助下,我设法编写了一个脚本,该脚本使我能够从Google表格的特定单元格中获取数据,并将该数据放入HTML模板并通过Gmail发送(全部在应用脚本代码中)。那很棒!但是我一直在尝试制作相同的脚本,但是这次我收集的数据是循环添加到HTML上的(因为我想分批发送电子邮件(现在我每次想点击一次按钮发送电子邮件,我有很多行要发送)。

主要问题是,为了用我的数据填充HTML,我需要从HMTL调用一个函数,当我需要提取特定Cell的值(例如:A1)但现在我需要数据时,这很酷循环指定的行的编号(例如:首先是A1,然后是A2)。该函数可以使用我需要的行(例如:getName(i),其中i是该行,但是由于我是从HTML调用函数的,所以我不知道如何将i传递给HTML来调用该函数。 '我陷入了循环。

获取单元格值的函数:

   function getname() {
       var ss = SpreadsheetApp.getActiveSpreadsheet();
       var sheet = ss.getSheetByName("Sheet2");  // the sheet I'm working on
       var name = sheet.getRange("A1");
       return name.getValues()[0]
   }

发送邮件的功能:

   function sendHTMLmail() {
     var htmlBody =                             HtmlService.createTemplateFromFile('test').evaluate().getContent();
     MailApp.sendEmail({
             to: "test@gmail.com",
             name: "test",   
             subject: "test",
             htmlBody: htmlBody,
           });  
   }

获取并打印名称的HTML代码

   <!DOCTYPE html>
   <html>
     <head>
       <base target="_top">
     </head>
     <body>
          <? var name = getname(); ?>

          Hi <?= name ?>
     </body>
   </html>

我想改善的循环

   function doGet() {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sss = ss.getSheetByName("Sheet1");

     for( i = 1 ; i < 4 ; i++) {

     var htmlBody = HtmlService.createTemplateFromFile('Prueba').evaluate().getContent();
     MailApp.sendEmail({
             to: "test@gmail.com",
             name: "test",   
             subject: "test",
             htmlBody: htmlBody,
           });  
   }
   }

0 个答案:

没有答案