2017-04-16 24 views

回答

2

在你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; 
    } 
} 

現在你可以以該客戶端上使用myFunction這行添加到您的HTML文件 <script type="text/javascript" src="https://script.google.com/macros/s/<id>/exec?func=myFunction"></script>

但是,如果你想在提供給客戶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; 
    } 
} 

然後在HTML文件中把<script type="text/javascript" src="https://script.google.com/macros/s/<id>/exec?file=a.gs"></script>

但另一方面,也許你可以把一個js文件放到你的谷歌驅動器中,然後你可以在a.gs中加載併發送給客戶端或使用eval進行評估。

相關問題