Поиск картинок Google в скрипте приложений
Моя цель - создать таблицу ключевых слов в Документах Google, по которой я могу циклически проходить, выполнить поиск изображений по каждому ключевому слову и сохранить URL-адреса полученных изображений в одной и той же таблице.
Здесь есть целый API JavaScript для поиска картинок Google. В Google Sheets скрипт пользовательских приложений также использует JavaScript. Я ищу способ доступа к этому API поиска изображений с помощью скрипта apps для документа Google, но не могу найти способ импортировать библиотеку.
Обновление: ссылка на API поиска Google не устарела: здесь
2 ответа
К сожалению, Google устарел API, на который вы ссылались. Кроме того, похоже, что подобный API не доступен в скрипте Google Apps. Таким образом, у вас остался один выбор: создать URL-адрес для поиска изображений в Google и использовать приложение для извлечения URL-адресов для захвата HTML-кода. Исходя из этого, вы сможете найти ссылки на изображения, которые были возвращены, но имейте в виду, что даже если вы все же заработаете, Google ненавидит все, что использует его поиск, как бот, и, вероятно, будет отмечать трафик. Извините, если это не тот ответ, который вы хотели, но это единственный ответ, который есть.
Воспользовавшись советом выше, я отказался от попыток включить API поиска Google напрямую и вместо этого использовал подход 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. Кажется, что это работает довольно хорошо для меня.
Один большой недостаток - вы не можете фильтровать результаты по размеру изображения, уровню ограничения и т. Д.