我想测试在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的链接。有谁知道怎么做?
答案 0 :(得分:1)
您只能在使用HTML服务的客户端脚本上使用JQuery。它不是服务器端。在HTML Services Best Practices中有一个关于使用它的模糊。
答案 1 :(得分:1)
这是不可能的。您必须使用HtmlService构建Web应用程序或自定义UI(侧边栏或对话框)并在客户端上进行处理。由于您的代码在Google服务器上运行,因此没有'窗口'或者'文件'对象。 DOM和BOM只能在客户端上访问。
事实上,随意做下面的小实验。打开浏览器控制台(我使用Chrome开发人员工具)并输入
console.log(this); //this logs global object
这是输出
这是'窗口' jQuery用于导航DOM树的对象。 jQuery只是一个构建在现有DOM操作方法和CSS选择器之上的JS库。
接下来,打开任何GAS文件,运行以下功能并检查日志(Ctrl + Enter):
function test() {
Logger.log(this);
}
这是输出。
如您所见,此上下文中的全局对象由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)
}
}