Как находить изображение в сети и добавлять в ячейку Google Таблиц - одной формулой

Рассмотрим задачу, которая относительно легко решается в Google Таблицах одной формулой: найти по названию (в нашем примере - по названию товара) изображение в сети и вывести его в ячейку.

Давайте разберем задачу по шагам и постепенно составим формулу, которая будет ее решать.

Как бы мы поступали, делая это вручную?

Все это можно делать с помощью функций.

Начнем с того, что будем искать название товара в поисковике. Сначала получим ссылку на поиск. Вобьем что-нибудь в Яндекс.Картинки - хоть слово "image" - и скопируем ссылку из браузера:

https://yandex.ru/images/search?text=image

Очевидно, нам нужно оставить часть ссылки до знака "равно" включительно. А далее подставлять справа название товара из ячейки (допустим, товар в столбце A):

=ГИПЕРССЫЛКА("https://yandex.ru/images/search?text="&A2)

Функция ГИПЕРССЫЛКА / HYPERLINK превратит текстовое значение, слепленное из начала ссылки и названия товара, в полноценную ссылку, по которой уже можно переходить и попадать на поиск текста из A2 в Яндекс.Картинках:

Уже неплохо! Но нам нужно получить ссылку на изображения, которые хранятся по ссылке, а переходить туда и не нужно. Получить инфо из веб-страницы можно с помощью IMPORTXML - от заголовков нужного уровня до ссылок. В том числе ссылок на изображения. Первый аргумент функции IMPORTXML - ссылка на страницу, второй - запрос XPath. Нам нужен запрос "//img/@src" - он выведет ссылки на все изображения:

=IMPORTXML(ГИПЕРССЫЛКА("https://yandex.ru/images/search?text="&A2);"//img/@src")

 

Функция IMPORTXML вывела все ссылки на изображения по первому товару. И мы можем теперь воспользоваться функцией IMAGE - напомню, она выводит в ячейке изображение, хранящееся по ссылке:

Но нам все-таки нужно только одно изображение по каждому товару. Поэтому я предлагаю воспользоваться функций ИНДЕКС / INDEX, выводящей из массива нужный элемент по его номеру. Здесь мы возьмем второй элемент выводимого IMPORTXML массива ссылок - видно, что первая ссылка пустая, поэтому так. Будем считать, что самый верхний элемент будет наиболее подходящим. Хотя, конечно, можно выводить и другой или вообще добавить элемент случайности с помощью генератора случайных чисел СЛУЧМЕЖДУ / RANDBETWEEN, но мы пока реализуем вариант попроще.

=IMPORTXML(ГИПЕРССЫЛКА("https://yandex.ru/images/search?text="&A2);"//img/@src");2))

Эта формула будет возвращать ссылку на верхнее изображение со страницы поиска текста из A2 в Яндекс.Картинках. Массив больше не выводится:

Ну все, осталось вместо ссылки сразу выводить изображение, т.е. всю конструкцию поставить в аргумент функции IMAGE:

=IMAGE(ИНДЕКС(IMPORTXML(ГИПЕРССЫЛКА("https://yandex.ru/images/search?text="&A2);"//img/@src");2))

И протянуть ее по всему прайс-листу:

***

Мой курс по Google Таблицам в Skillbox

Рубрики:
    Без рубрики
Комментарии
Темы, на которые я пишу:
  • отсутствуют