1

我的目标是制作Google文档电子表格,其中包含关键字的电子表格,可以对每个关键字执行图片搜索,并将生成的图片网址保存在同一电子表格中。在应用程序脚本中搜索Google图片

有一个完整的谷歌图片搜索JavaScript API找到here。在Google表格中,自定义应用脚本也使用JavaScript。我正在寻找一种方法来访问这个图像搜索API使用谷歌文档的应用程序脚本,但似乎无法找到一种方法来导入库。

更新:非弃用谷歌搜索API链接:here

回答

2

不幸的是,谷歌弃用您链接到API。此外,Google Apps脚本中似乎没有可用的类似API。因此,您还有一个选择,即构建Google图片搜索的网址,并使用网址抓取应用抓取HTML。因此,您可能能够找到已返回图像的链接,但要事先警告,即使您确实能够正常运行,Google也会憎恨任何使用搜索引擎的内容,并且可能会标记流量。对不起,如果这不是你想要的答案,但它是唯一的答案。

+0

感谢过滤搜索结果。我已经添加了一个新的链接到谷歌自定义搜索API,这似乎是最新的。 – jchmilew

+0

该API的不幸问题是,它只使用您使用Google工具创建的特定于站点的搜索引擎。您将无法将其用于访问标准Google图片搜索中的信息。 –

+0

哦,再加上...该API也被折旧... –

2

从上面的建议我放弃了试图直接合并谷歌搜索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.似乎对我工作得非常好。

的一个大缺点是无法通过图像大小,限制等级等为输入,我很担心会出现这种情况