【发布时间】:2015-09-07 06:00:03
【问题描述】:
我正在尝试将一个变量(我在单元格 A1 中的名字)从我的 code.gs 传递到我的 Index.html 并通过电子邮件发送。
谁能告诉我我做错了什么或指出我正确的方向。
代码.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:"example@domain.com",
htmlBody: body,
});
return myName;
Index.html
<!DOCTYPE html>
<html>
<body>
<p><? var data = sendEmail(); ?><?= data ?></p>
</body>
</html>
【问题讨论】:
-
我认为问题在于递归。为了发送电子邮件(函数 sendEmail),必须评估模板,但为了评估模板,必须执行函数 sendEmail -> 永恒循环。您可以通过将模板中的 sendEmail 函数分离到 doGet 函数来对其进行转义。
-
@WimdenHerder 抱歉,但我不明白如何将它们分开。你能举个例子吗?感谢您迄今为止的帮助!
-
您是否已经用实际的电子表格 ID 替换了
'MY_SPREADSHEET_ID'?它应该类似于这个:1eTQYnI3jOKtyWF1V1DbuF8pdzpUwRNr9podKcoORD68. -
是的 Rubén,我只是为了这个问题把那个 ID 放在那里
-
好。如果您将使用 Index.html 调用 sendEmail 函数,您应该将您的电子邮件正文移动到另一个位置。 IE。您可以在 Code.gs 中构建正文代码或使用第二个 HTML 文件。
标签: javascript html google-apps-script google-sheets evaluate