【问题标题】:Google Image search within apps script应用脚本中的 Google 图片搜索
【发布时间】:2015-08-19 22:49:11
【问题描述】:

我的目标是创建一个包含关键字的 Google 文档电子表格,我可以循环使用它,对每个关键字执行图像搜索,并将生成的图像 URL 保存在同一个电子表格中。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的意见,我担心会出现这种情况。我添加了一个新链接到谷歌自定义搜索 API,这似乎是最新的。
      • 该 API 的不幸问题是它仅使用您使用 Google 工具创建的特定于站点的搜索引擎。您将无法使用它来访问来自标准 Google 图片搜索的信息。
      • 顺便说一句,如果您或其他人找不到更理想的解决方案,请接受我的回答。有时人们不会这样做只是因为这不是他们想听到的答案。
      • 我有一个与@JoshuaDannemann 描述的类似的脚本,在开发过程中我被谷歌临时列入黑名单几次。除非您知道您的请求将很少见,否则绝对不是要走的路。解决这个问题的最好方法是找到一个具有良好 API 的搜索引擎,尽管在我寻找一个的过程中我从来没有留下深刻的印象。约书亚的回答绝对应该被接受为正确的。
      猜你喜欢
      • 2012-01-11
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多