3

Я пытаюсь передать переменную (мое имя в ячейке A1) из моего кода.gs в свой Index.html и отправить ее по электронной почте.Передача js Переменная в html-файл GAS-BASIC

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно, или укажите мне в правильном направлении.

Code.gs

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'); 
var body = template.evaluate().getContent(); 

// SEND THE EMAIL 
MailApp.sendEmail({ 
    subject:"Test Email", 
    to:"[email protected]", 
    htmlBody: body, 
}); 

return myName; 

Index.html

<!DOCTYPE html> 

<html> 
    <body> 
    <p><? var data = sendEmail(); ?><?= data ?></p> 
    </body> 
</html> 
+0

Я думаю, проблема заключается в рекурсии. Чтобы отправить E-mail (функция sendEmail), шаблон должен быть оценен, но для оценки шаблона должна выполняться функция sendEmail -> вечный цикл. Вы можете избежать этого, разделив функцию sendEmail с шаблоном на функцию doGet. –

+0

@ WimdenHerder извините, но я не понимаю, как я могу их разделить. Можете ли вы привести и пример? Спасибо за вашу помощь! –

+0

Вы уже заменили 'MY_SPREADSHEET_ID'' на фактический идентификатор электронной таблицы? Он должен выглядеть примерно так: '1eTQYnI3jOKtyWF1V1DbuF8pdzpUwRNr9podKcoORD68'. –

ответ

0

Вопрос был еще открыт, когда я нашел его, и у меня была аналогичная проблема, так вот мое решение (без doGet()), основываясь на полезных комментариях от Wim den Herder и Rubén (и пример в documentation):

Code.gs

function sendEmail() { 
var recipient = '[email protected]'; 
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> 
2

Прочитайте это, 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:"[email protected]", 
     htmlBody: body, 
}); 

Index.html

<!DOCTYPE html> 

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