添加 JQuery 对自定义函数的引用

Add JQuery reference to custom function

我想测试在 Google 表格的自定义函数中调用 API。 code.gs如下:

function TApi(input) {
  var url = "https://api.nytimes.com/svc/search/v2/articlesearch.json";
  url += '?' + $.param({
    'api-key': "cdaa59fea5f04f6f9fd8fa551e47fdc4",
    'q': "MIT"
  });
  $.ajax({
    url: url,
    method: 'GET',
  }).done(function(result) {
    return result;
    console.log(result);
  }).fail(function(err) {
    throw err;
  });
}

但是当我在 sheet 单元格中调用 =TAPI() 时,它 returns 一个错误 ReferenceError: "$" is not defined. (line 22). 我想我们需要添加一个 link 到 JQuery。有人知道怎么做吗?

您只能在使用 HTML 服务的客户端脚本上使用 JQuery。它在服务器端不可用。在 HTML Services Best Practices.

中有关于使用它的简介

这不可能。您必须使用 HtmlService 构建 Web 应用程序或自定义 UI(边栏或对话框),并在客户端上进行处理。因为您的代码 运行 在 Google 服务器上,所以没有 'window' 或 'document' 对象。 DOM 和 BOM 只能在客户端访问。

事实上,您可以随意做以下小实验。打开您的浏览器控制台(我正在使用 Chrome 开发者工具)并输入

console.log(this); //this logs global object

这是输出

这是 jQuery 用于导航 DOM 树的 'window' 对象。 jQuery 只是一个建立在现有 DOM 操作方法和 CSS 选择器之上的 JS 库。

接下来,打开任何 GAS 文件,运行 以下函数并检查日志 (Ctrl + Enter):

function test() {
 Logger.log(this);
}

这是输出。

如您所见,此上下文中的全局对象由 Google 定义的伪 类(GAS 服务)组成。

您可以使用 urlFetch 应用程序。试试下面的代码片段

function fetchURL() {
    try {
        var url = "https://api.nytimes.com/svc/search/v2/articlesearch.json";
        url += '?api-key=cdaa59fea5f04f6f9fd8fa551e47fdc4&q=MIT';
        var params = {
            'method': 'get',
            'contentType': 'application/json',
            'muteHttpExceptions': true
        }
        var response = UrlFetchApp.fetch(url, params);
        Logger.log(response)
    } catch (e) {
        Logger.log(e)
    }
}