Для тех, кто ищет простой вид калибра, я создал библиотеку, которую вы можете клонировать и использовать / модифицировать для ваших нужд.
[/g1]
exampl1.gs:
function getData1(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet48')
var rg=sh.getDataRange();
var vA=rg.getValues();
var html='<style>td,th{border:1px solid #000;}</style><table>';
if(vA.length>0){
for(var i=0;i<vA.length;i++){
html+='<tr>';
for(var j=0;j<vA[i].length;j++){
if(i==0){
html+=Utilities.formatString('<th>%s</th>', vA[i][j]);
}else{
html+=Utilities.formatString('<td>%s</td>', vA[i][j]);
}
}
}
html+='<table>';
}
return html;
}
function showExample1Dialog(){
var userInterface=HtmlService.createTemplateFromFile('example1').evaluate();
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Example1");
}
css1.html:
<style>
body {background-color:#ffffff;}
input{padding:2px;margin:2px;}
</style>
script1.html:
<script>
$(function(){
google.script.run
.withSuccessHandler(function(hl){
document.getElementById('table').innerHTML=hl;
})
.getData1();
});
console.log('My Code');
</script>
res1.html:
<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>
example1.html:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('res1') ?>
<?!= include('css1') ?>
</head>
<body>
<div id="table"></div>
<?!= include('script1') ?>
</body>
</html>
@ Купер, спасибо за предложенное решение, я еще не пробовал его, но попробую.
После небольшого обдумывания и исследования, эта статья Google была действительно полезной , я подумал, что было бы легче разделить то, что я хотел сделать, на разные функции и разыграть передачу.
function createHTML(data){
var t = HtmlService.createTemplateFromFile('template');
t.data = data;
sendEmail(t.evaluate().getContent());
}
function sendEmail(htmlBody){
var mailAddy = "email addy";
MailApp.sendEmail({
to:mailAddy,
subject: 'Test Email markup - ' + new Date(),
htmlBody: htmlBody,
});
}
function getData(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getRange(2, 1, sheet.getLastRow()-1, sheet.getLastColumn());
var values = range.getValues();
for (var i = 0; i < values.length; i++){
var data = values[i];
createHTML(data);
}
}
Функция getdata получает строку данных, которую я хочу использовать, из электронной таблицы, а затем передает ее в createHTML, который создает HTML-текст сообщения. это решает мою блокировку попыток перебрать данные либо с помощью кода Google или HTML.
Затем он передает результаты в функцию sendEmail для отправки электронного письма.
это была функция createHTML, которая изменила правила игры. Объявление t.data в файле .gs и передача значений в html способом, который я знаю, означало, что я мог бы перебрать свой массив. Если это имеет какой-то смысл.
Это было мое решение, но, конечно, я открыт для всех способов сделать это и спросить, почему х лучше.