2014-11-04 96 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

相關問題