我有一个自定义文件,可以为服务器端 a.gs 以及客户端 a.js 提供服务,两者都定义了相同的功能
而不是有 a.gs 和 a.js 我将如何制作
function include(filename) {
return HtmlService.createHtmlOutputFromFile('<script>'+a.gs+'</script>').getContent();
}
类似上面的东西。
在您的doGet
函数中,您可以检查是否存在特定参数,然后将 a.gs 中包含的全部或部分代码发送到客户端。
function doGet(e) {
if(e.parameter.func) {
var out = ContentService.createTextOutput(this[e.parameter.func].toString());
out.setMimeType(ContentService.MimeType.JAVASCRIPT);
return out;
}
}
现在您可以将此行添加到您的 html 文件<script type="text/javascript" src="https://script.google.com/macros/s/<id>/exec?func=myFunction"></script>
中,以便myFunction
在客户端上使用。
但是,如果您想让 a.gs 中的所有内容对客户端可用,而不仅仅是单个功能,您可以这样做
function genCode2(obj) {
if(obj instanceof Array) return JSON.stringify(obj);
if(obj === null) return "null";
if(typeof(obj) === "undefined") return "undefined";
if(typeof(obj) === "object") {
var str = "{\n";
for(key in obj) {
if(typeof obj[key] === "function") {
var s = obj[key].toString() + "\n";
if(s.indexOf("[native code") < 0) str += "\"" + key + "\": " + s + ",\n";
} else {
str += "\"" + key + "\": " + genCode2(obj[key]) + ",\n";
}
}
return str + "\n}";
}
return JSON.stringify(obj);
}
function genCode(obj) {
var str = "";
for(key in obj) {
if(typeof obj[key] === "function") {
var s = obj[key].toString() + "\n";
if(s.indexOf("[native code") < 0) str += s;
} else {
str += "var " + key + " = " + genCode2(obj[key]) + ";\n";
}
}
return str + "";
}
function doGet(e) {
if(e.parameter.file === "a.gs") {
var out = ContentService.createTextOutput(genCode(this));
out.setMimeType(ContentService.MimeType.JAVASCRIPT);
return out;
}
}
然后放入<script type="text/javascript" src="https://script.google.com/macros/s/<id>/exec?file=a.gs"></script>
html文件。
但另一方面,也许您可以将一个 js 文件放入您的谷歌驱动器,然后您可以加载a.gs
并发送给客户端或使用 eval 进行评估。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句