应用脚本中的Google图片搜索

时间:2015-08-19 22:49:12

标签: javascript google-apps-script google-docs google-image-search

我的目标是拥有一个关于我可以循环使用的关键字的Google文档电子表格,对每个关键字执行图片搜索,并将生成的图片网址保存在同一个电子表格中。

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

更新:未弃用的Google搜索API链接:here

2 个答案:

答案 0 :(得分:3)

根据上述建议,我放弃了尝试直接合并谷歌搜索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.看起来对我来说效果很好。

一个很大的缺点是您无法按图像大小,限制级别等过滤结果。

答案 1 :(得分:2)

很遗憾,Google已弃用您链接的API。此外,Google Apps脚本中似乎没有类似的API。因此,您只剩下一个选择,即构建Google图片搜索的网址,并使用网址获取应用抓取HTML。从那以后,您可能能够找到返回的图像的链接,但是要预先警告,即使您确实能够使用它,Google也会讨厌像机器人那样使用其搜索的任何内容,并且可能会标记流量。对不起,如果这不是您想要的答案,但这是唯一的答案。