【问题标题】:inject external javascript file in google app script(Google Docs) [closed]在谷歌应用脚​​本(谷歌文档)中注入外部javascript文件[关闭]
【发布时间】:2014-12-31 02:59:02
【问题描述】:

请告诉我如何在谷歌应用脚​​本(谷歌文档)中注入外部 javascript 文件。

提前致谢。

【问题讨论】:

标签: google-apps-script google-docs google-docs-api


【解决方案1】:

根据您所说的 Inject 的含义,一种可能的答案是使用标准的 javascript eval() 函数和 UrlFetchApp:

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

如果您想在已发布脚本的 HTML 输出中包含 JS 文件,只需在 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

【讨论】:

  • 我已经尝试过使用 eval() 和 UrlFetchApp 但对我不起作用,因为我的外部 js 使用 HTML 窗口和文档对象。我得到 Error undefined window object
  • 这是有道理的,在 Apps Script 中没有像 window 和 document 这样的 DOM 对象的概念,因为它们代表客户端浏览器,而 Apps Script 运行在服务器端环境中。跨度>
  • 我无法在客户端加载带有“脚本”标签的 jquery,与指定的“严格动态”相关的内容
  • @datdinhquoc 我相信 caja sanbox 会限制你使用旧版本的 jquery,试试 3.2.1 版
  • 现在加载正常,我看到的只是黄色警告
【解决方案2】:

您希望“注入”的 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 中没有任何内容涉及另一个脚本文件的存在。相反,项目中所有文件中声明的函数和变量都在彼此的“范围内”。

【讨论】:

  • 我想将我的外部 js 文件插入/加载/注入到 google docs 主 HTML 页面中。
  • 如果您想将 JavaScript 添加到 Google Docs 的 HTML,那么 Apps 脚本可能不是您想要的。有一些工具,如用于 Chrome 的 Tampermonkey 和用于 Firefox 的 Firebug,它们可以让您将 Javascript 添加到您访问的任何页面。听起来这可能更能满足您的需求。
  • 我建议提出一个更直接地描述您想要做什么的新问题。 Google 没有提供任何直接的机制来操作 Google Drive 的界面,但是还有其他技术可以工作(例如 jjjjoe 提到的那些技术,以及其他技术),具体取决于您要执行的操作。想到书签,它们允许您通过单击浏览器中的书签将 Javascript 添加到当前打开的页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 2022-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多