我的目标是制作Google文档电子表格,其中包含关键字的电子表格,可以对每个关键字执行图片搜索,并将生成的图片网址保存在同一电子表格中。在应用程序脚本中搜索Google图片
有一个完整的谷歌图片搜索JavaScript API找到here。在Google表格中,自定义应用脚本也使用JavaScript。我正在寻找一种方法来访问这个图像搜索API使用谷歌文档的应用程序脚本,但似乎无法找到一种方法来导入库。
更新:非弃用谷歌搜索API链接:here
我的目标是制作Google文档电子表格,其中包含关键字的电子表格,可以对每个关键字执行图片搜索,并将生成的图片网址保存在同一电子表格中。在应用程序脚本中搜索Google图片
有一个完整的谷歌图片搜索JavaScript API找到here。在Google表格中,自定义应用脚本也使用JavaScript。我正在寻找一种方法来访问这个图像搜索API使用谷歌文档的应用程序脚本,但似乎无法找到一种方法来导入库。
更新:非弃用谷歌搜索API链接:here
不幸的是,谷歌弃用您链接到API。此外,Google Apps脚本中似乎没有可用的类似API。因此,您还有一个选择,即构建Google图片搜索的网址,并使用网址抓取应用抓取HTML。因此,您可能能够找到已返回图像的链接,但要事先警告,即使您确实能够正常运行,Google也会憎恨任何使用搜索引擎的内容,并且可能会标记流量。对不起,如果这不是你想要的答案,但它是唯一的答案。
从上面的建议我放弃了试图直接合并谷歌搜索API,而是使用URL方法。这就是我最终所做的,以防将来有人想要这样做。
var delayMilli = 0;
function fetchURL(sheet,row,urlCell) {
delay(delayMilli)
var row = sheet.getRange(row,1,1,2).getValues()[0];
// This example searches for two terms located in row number "row"
var response = UrlFetchApp.fetch("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q="+row[1]+"%20"+row[0]);
var data = JSON.parse(response);
if (data.responseData.results[0]) {
var urlString = data.responseData.results[0].url;
urlCell.setValue(urlString);
if (delayMilli >= 0) {
delayMilli -= 5;
}
} else {
// Delay the method and try again.
delayMilli += 100;
fetchURL(sheet,row,urlCell)
}
}
如果响应对象为空,通常是因为Google拒绝了服务器调用。在上面的代码中,每次失败的迭代将在再次尝试之前延迟0.1秒。一旦通话再次开始,没有任何问题,延迟时间缓慢减少到0.似乎对我工作得非常好。
的一个大缺点是无法通过图像大小,限制等级等为输入,我很担心会出现这种情况
感谢过滤搜索结果。我已经添加了一个新的链接到谷歌自定义搜索API,这似乎是最新的。 – jchmilew
该API的不幸问题是,它只使用您使用Google工具创建的特定于站点的搜索引擎。您将无法将其用于访问标准Google图片搜索中的信息。 –
哦,再加上...该API也被折旧... –