将JQuery引用添加到自定义函数

时间:2017-08-25 15:33:13

标签: google-apps-script google-sheets 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;
  });
}

但是当我在表单元格中调用=TAPI()时,它会返回错误ReferenceError: "$" is not defined. (line 22).我想我们需要添加一个指向JQuery的链接。有谁知道怎么做?

3 个答案:

答案 0 :(得分:1)

您只能在使用HTML服务的客户端脚本上使用JQuery。它不是服务器端。在HTML Services Best Practices中有一个关于使用它的模糊。

答案 1 :(得分:1)

这是不可能的。您必须使用HtmlService构建Web应用程序或自定义UI(侧边栏或对话框)并在客户端上进行处理。由于您的代码在Google服务器上运行,因此没有'窗口'或者'文件'对象。 DOM和BOM只能在客户端上访问。

事实上,随意做下面的小实验。打开浏览器控制台(我使用Chrome开发人员工具)并输入

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

这是输出

enter image description here

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

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

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

这是输出。

enter image description here

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

答案 2 :(得分:0)

您可以使用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)
    }
}