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。对我来说似乎工作得很好。
一个很大的缺点是您不能按图像大小、限制级别等过滤结果。