将变量从Google Apps脚本传递到html模板 [英] Passing variable from google apps script to html template

查看:59
本文介绍了将变量从Google Apps脚本传递到html模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一个简单变量(profesorgg)传递给google Apps脚本中的HTML模板,以便评估我学校中每位老师的HTML并向他们发送个性化电子邮件.这是代码:

I'm triyng to pass a simple variable (profesorgg) to an HTML template in google Apps Script in order to evaluate the HTML for each teacher in my school and send to them a personalized email. This is the code:

Code.gs

function Recordatorio() {

//COGIENDO UN PROFESOR DESDE GROUPS

var page = AdminDirectory.Users.list({
  domain: 'iesovaldemedel.es',
  orderBy: 'familyName',
  maxResults: 400});
var has = GroupsApp.getGroupByEmail("profesores@iesovaldemedel.es").getUsers();


var users = page.users;
if (users) {
  for (var i = 0; i < users.length; i++) {

    var email = users[i].primaryEmail;
    var nombre = users[i].name.givenName;
    var apellidos = users[i].name.familyName;
for (var h in has){

    if (has[h] == email){

var profesorgg = apellidos + ", "+nombre;

var subject ="Resumen de faltas para " +profesorgg + "." ;
var body = "Se adjunta el resumen de faltas del mes que termina"; 
var html = HtmlService.createTemplateFromFile("recordatoriohtml");
html.data = profesorgg;
var htmlbody =html.evaluate().getContent();

MailApp.sendEmail("mariomorenogo@gmail.com", subject, body, {htmlBody: 
htmlbody});

}}}}}

HTML文件:recordatoriohtml

HTML FILE: recordatoriohtml

<html>
<head>

</head>
<body>

<h1 align="center">IESO Valdemedel</h1>
<div class = "wrapper3">
<image align="center" src="image>
</image>
</div>

<? var today = new Date;
var mes = today.getMonth();
var ano = today.getYear();
var date = Utilities.formatDate(today, "GMT+1", "dd-MM-yyyy");
var data = SpreadsheetApp.openById("myspreadsheet")
.getSheetByName("DATOS").getDataRange().getValues();

我正在致电Profesorgg HERE(HMTL文件继续)

I`m triyng to call profesorgg HERE (HMTL file continuation)

var profesorg = profesorgg;
var faltamas=0;
var faltas =[];
//BUSCANDO A ESE PROFESOR EN LAS FALTAS

for ( var o = 1 ; o<data.length; o++){
var timestamp = data[o][0];

var profesor = data[o][1];
var diadefalta = data[o][2];
var todoeldia = data[o][4];
var motivo = data[o][3];


if(diadefalta != ""){
var diadefalta2 =  Utilities.formatDate(diadefalta, "GMT+2", "dd-MM-yyyy");
var mesfalta = diadefalta.getMonth();
var anofalta = diadefalta.getYear();}
else{var diadefalta = "-"}


if (ano == anofalta && mes == mesfalta && profesor == profesorg){
faltamas++
faltas.push([diadefalta2,profesor,todoeldia,motivo]);}}

if(faltamas >0){?>

<hr width=100%>
<h1 align = "center">Resumen Futuro</h1>
<hr width=100%>

<h2> Faltas para mañana </h2>
<?if(faltas !=""){?>
<div>
<table style="width:100%">
<tr>
<th id="t01">Fecha</th>
<th id="t02">Todo el día</th> 
<th id="t03">Motivo</th>

</tr>
<?for (var c=0; c<faltas.length; c++){?>
<tr>
<td id="td01"><?=faltas[c]?></td>

<td id="td02"><?=faltas[c][0]?></td> 
<td id="td03"><?=faltas[c][2]?></td>
<td id="td04"><?=faltas[c][3]?></td>

</tr>
<?}}}?>
</table>
<br>
<hr width=100%>

<?if (faltas ==""){?>
No tienes faltas este mes
<?}?>
<br>

</div>

<hr width=100%>

<h3>Atentamente, IESO Valdemedel</h3>
<hr width=100%>
</body>
<footer>

<b><i><small>Powered by</small></i></b> <br> 
<a href="http://www.teachinginsights.es">
<img src="image>
</a>

<hr width=100%>
</footer>
</html>

¿有可能吗?非常感谢您的帮助

¿It is possible? Thanks a lot for your help

马里奥·莫雷诺

推荐答案

如果我正确阅读了您的代码,则您将像这样传递变量"profesorgg":

If I read your code right, you are passing the variable "profesorgg" like this:

 html.data = profesorgg;

这是正确的方法,但是请注意,您实际上是在html中声明一个变量"data",并为其分配profesorgg的值. 这意味着在您的html

Which is the right way to go, but note that you are actually declaring a variable "data" to your html and assigning the value of profesorgg to it. This means that in your html

<? data ?> 

将返回我认为您在行中覆盖它的profesorgg execpt的值

would return the value of profesorgg execpt that I think you are overriding it in the line

 var data = SpreadsheetApp.openById("myspreadsheet")
.getSheetByName("DATOS").getDataRange().getValues();

无论如何,下一行要在您的html文件中起作用:

anyway, for the next line to work in your html - file:

var profesorg = profesorgg;

您需要在.gs文件中执行此操作:

you would need to do this in your .gs file:

 html.profesorg = profesorgg;

这篇关于将变量从Google Apps脚本传递到html模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆