2014-11-04 73 views

回答

6

根据你所说的进样东西,一个可能的答案是使用具有UrlFetchApp沿着标准JavaScript eval()函数:如果您想在一个HTML输出JS文件

eval(UrlFetchApp.fetch('http://path.to/external/javascript.js').getContentText()); 

发布的脚本,只需在HTML中包含JavaScript使用标签。

<script src="http://path.to/external/javascript.js"></script> 

评估和演示文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval UrlfetchApp文档:https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

+1

我已经尝试过使用eval()和UrlFetchApp,但不适用于我,因为我的外部js使用HTML窗口和文档对象。 我得到的**错误未定义的窗口对象** – 2014-11-05 05:21:15

+1

这很有意义,在Apps脚本中没有像窗口和文档这样的DOM对象的概念,因为它们代表客户端浏览器,并且Apps脚本在服务器中运行边环境。 – 2014-11-05 14:37:00

1

你期望的JavaScript文件要 “注入” 定期更改?如果不是,最简单的方法是在项目中创建一个新的脚本文件,并添加要注入的文件的内容。举例来说,假设你开始Code.gs只有一个功能,很大程度上基于电子表格的项目模板:

/** 
* Adds a custom menu to the active spreadsheet 
*/ 
function onOpen() { 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Tell a Joke", 
    functionName : "beFunny" 
    }]; 
    spreadsheet.addMenu("Script Center Menu", entries); 
}; 

你看我打电话“beFunny()”,这是不是在这个文件中。相反,它是一个新的文件,ExtraStuff.gs

function beFunny() { 
    Browser.msgBox('Waka waka waka'); 
} 

运行它,并Tell a Joke菜单项工作,即使没有在Code.gs指的是另一个脚本文件的存在。相反,项目中所有文件中声明的函数和变量都是“在范围内”。

+0

我想插入/加载/注入我的外部js文件到谷歌文档主HTML页面。 – 2014-11-05 05:26:12

+1

如果您想将JavaScript添加到Google文档的HTML中,则Apps脚本可能不是您想要的。 Chrome中有[Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=en)等工具,Firefox中的[Firebug](http://getfirebug.com/)让您将JavaScript添加到您访问的任何页面。听起来这可能会更好地满足您的需求。 – jjjjoe 2014-11-05 12:13:26

+1

我建议问一个更直接描述你想要做什么的新问题。谷歌没有提供任何操纵谷歌驱动器界面的直接机制,但是还有其他技术可以工作(如jjjjoe提及的那些技术以及其他技术),具体取决于您尝试执行的操作。想到Bookmarklet,他们允许您通过单击浏览器中的书签将Javascript添加到当前打开的页面。 – 2014-11-05 14:39:19

相关问题