google-apps-script - 谷歌脚本将元素附加到 HTML 文档
问题描述
我想将我的 Google 脚本中的数据加载到我的 HTML 文档中并通过电子邮件发送。当我运行下面的代码时,我得到了错误ReferenceError: "document" is not defined.
。
我不明白错误的原因,或者如何解决它。
我的 GS 脚本:
function sendEmail(){
//Email Template
var emailTemp = HtmlService.createTemplateFromFile("template"); // Access to the HTML document
// Tab Stichprobe
var stichprobe = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Stichprobe");
var stichprobecapital = stichprobe.getRange("A2:L"+stichprobe.getLastRow()).getDisplayValues(); // Array AssetName
var software = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Software");
var softwarecapital = software.getRange("A2:E"+software.getLastRow()).getDisplayValues();
var test=[];
var stichprobelen = stichprobe.getRange("A2:A"+stichprobe.getLastRow()).getDisplayValues().length;
var softwarelen = software.getRange("A2:A"+software.getLastRow()).getDisplayValues().length;
var softwareindex = [];
//Config
var config = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Config");
var subject = config.getRange("B1:B1").getValue();
var counter = config.getRange("B5:B5").getValue();
var subject = config.getRange("B1:B1").getValue();
var replyto = config.getRange("B3:B3").getValue();
var name = config.getRange("B2:B2").getValue();
var error = config.getRange("B6:B6").getValue();
var cc = config.getRange("B4:B4").getValue();
for (var a = 0; a<stichprobelen; a++){
for (var i = 0; i<softwarelen; i++){
if (softwarecapital[i][0] == stichprobecapital[a][0]){
softwareindex.push(i);
}
}
var softindexlen = softwareindex.length;
for(var b = 0; b < softindexlen; b++) {
var node = document.createElement("LI");
var textnode = document.createTextNode(softwarecapital[0][1]);
node.appendChild(textnode);
document.getElementById("liste").appendChild(node);
}
var htmlMessage = emailTemp.evaluate().getContent();
GmailApp.sendEmail(stichprobecapital[a][2], subject, error,{name:name, htmlBody: htmlMessage, replyTo: replyto, cc: cc});
}
}
我的 HTML 脚本:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<ul id="liste">
</ul>
</body>
</html>
问候
解决方案
您正在尝试在服务器端代码中使用 HTML DOM Document 对象。导致错误的行是:
var node = document.createElement("LI");
您不能在 Apps 脚本“.gs”文件中使用 HTML DOM 对象。您可以使用 Html 服务 - 带有 scriptlet 的模板化 HTML:
https://developers.google.com/apps-script/guides/html/templates
您无法在浏览器中为电子邮件构建 HTML,因为您没有加载 Web 应用程序、侧边栏或对话框。尽管 Apps Script 使用 JavaScript,但它与您在浏览器中使用的并不完全相同。而且 DOM 不是 JavaScript。DOM 允许在浏览器中操作 HTML。
基本上,您需要使用文本连接为列表构建 HTML。
推荐阅读
- graph - 无法从 csv 加载 Cytoscape 中的节点表
- sql-server - 如何使用随机数生成真正的随机结果?ABS(CHECKSUM(NewID))) 不工作
- html - 如何修复无法读取 Angular 中的属性
- python - 簇/斑点检测
- ruby-on-rails - 扩展 Rails ThoughtBot/Clearance gem 以进行密码轮换
- firebase - 如何获取 Firebase 文档中的特定字段
- .net - 如何为我的应用程序在 azure ad 中添加角色?
- spring - 为什么我的 Log4j 日志没有显示到控制台?
- postgresql - Postgres:监控执行计划的哪一部分正在运行长查询
- python - 在 Imagedatagenerator 中是否将 class_mode 从二进制更改为分类之间感到困惑