Google 应用程序脚本中的图像搜索

Google Image search within apps script

我的目标是拥有一个 Google 关键字的 docs 电子表格,我可以循环访问它,对每个关键字执行图像搜索,并将结果图像 URL 保存在同一个电子表格中.

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

更新:未弃用 google 搜索 API link:here

不幸的是,Google 弃用了您链接到的 API。此外,Google Apps 脚本中似乎没有类似的 API。因此,你只有一个选择,那就是构建URL到Google的图像搜索,并使用URL抓取应用程序来抓取HTML。从那里,您可能能够找到返回的图像的链接,但请注意,即使您确实让它工作,Google 讨厌任何像机器人一样使用其搜索并可能标记流量的东西。抱歉,如果这不是您想要的答案,但这是唯一的答案。

根据上面的建议,我放弃了尝试直接合并 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。对我来说似乎工作得很好。

一个很大的缺点是您不能按图像大小、限制级别等过滤结果。