QR-код в Google-таблицах: контакты, текст, ссылки

2,7K прочитали

Недавно мы создавали штрих-код в Excel (раз, два), и это было достаточно сложно и долго: все-таки, пришлось реализовать алгоритм кодирования самостоятельно. Сегодня кейс будет попроще - мы создадим в таблицах Google QR-код.

Возможно, вы уже видели инструкции, как создать код с помощью функции IMAGE и сервиса гугл chart.googleapis.com. О чем обычно не говорят, так это о том, что нельзя просто указать текст, и получить QR-код с ним. Но я покажу, как это обойти!

Начнем с простого варианта - закодировать ссылку на сайт. Создаем новую табличку, задаем поля для ссылки, размера QR кода, и пишем формулу:

=IMAGE("https://chart.googleapis.com/chart?cht=qr&chs="&B2&"x"&B2&"&chl="&B1)

QR-код в Google Sheets
QR-код в Google Sheets

Получилось? Супер! Теперь я расскажу что за значения мы подставляли в функцию. Функция IMAGE позволяет динамически загрузить и вставить в таблицу картинку из интернета, единственный обязательный аргумент в этой функции - адрес картинки. Как адрес картинки мы использовали сервис chart.googleapis.com, (о нем можно прочитать в справке: https://developers.google.com/chart/infographics/docs/qr_codes). Для генерации QR-кода, сервис принимает следующие параметры:

  • cht=qr - указание, что нужно сгенерировать QR-код
  • chs=WxH - размеры готового кода, где W это ширина, а H - высота в пикселях.
  • chl=data - вместо data нужно указать данные, которые кодируем
  • chld=E - вместо E можно указать одно из значений L, M, Q, H - уровень коррекции ошибок, где L самый низкий, а H самый высокий. Высокий уровень коррекции ошибок позволит расшифровать код, даже если часть изображения повреждена или скрыта. Это необходимо, если хотите добавить свой логотип внутрь QR-кода.

Вроде выглядит не очень сложно. Попробуем создать новый лист, и сгенерировать код для какого-нибудь простого сообщения, например, традиционного "Hello world!". Создадим форму, куда можно ввести сообщение, размер, и уровень коррекции ошибок. Кроме того, давайте сначала адрес картинки выведем в отдельную ячейку, а только потом будем вставлять с помощью формулы IMAGE.:

Картинка не грузится
Картинка не грузится

Что-то пошло не так. Картинка не грузится. На самом деле, проблема в том, что не все символы можно использовать напрямую в запросе URL. Нельзя использовать символы пробел, восклицательный знак, плюс, одиночные и двойные кавычики и др. Эти символы нужно специальным образом закодировать. Для этого есть функция ENCODEURL. Добавим ее в ячейку B4:

Работа функции ENCODEURL
Работа функции ENCODEURL

На скриншоте видно, что пробел заменился на "%20", а восклицательный знак на "%21". И QR-код загрузился.

С этим разобрались. Осталось разобраться, как можно закодировать контакт? Для этого данные должны содержать "визитную карточку" в одном из форматов: vCard или MeCard. Ну что, попробуем закодировать "визитку"?

Создаем еще одну вкладку, размещаем там форму для ввода данных и склеиваем все в формат vCARD, кодируем с помощью ENCODEURL и скармливаем получившиеся данные сервису Google:

Я использовал следующую формулу для подготовки vCard:

="BEGIN:VCARD"&CHAR(10)&"VERSION:3.0"&CHAR(10)&"N:"&C3&";"&C2&";"&C4&char(10)&"ADR:"&join(";";C8:C14)&char(10)&"TEL:"&C15&char(10)&"EMAIL:"&C16&char(10)&"ORG:"&C17&char(10)&"NOTE:"&C18&char(10)&"URL:"&C19&char(10)&"BDAY:"&text(C6;"yyyy-mm-dd")&char(10)&"END:VCARD"

Формула достаточно простая, и наверное, не должна вызвать вопросов. Прокомментирую лишь пару функций:

  • char(10) - вставляет символ новой строки
  • join - позволяет склеить массив данных (второй аргумент) с помощью разделителя (первый аргумент).
  • text - позволяет представить число или дату в нужном формате.

Что можно еще? Можно добавить другие поля (смотрите описание формата в Википедии), можно даже попытаться добавить фотографию. Дерзайте! Файл с таблицей доступе по адресу: https://docs.google.com/spreadsheets/d/1KUJ1TlFl8MqJkbUUBEq_lC2qUMW7_eAFuxhY8AVE2vk/edit?usp=sharing

На сегодня все, подписывайтесь, чтобы не пропустить новые статьи. До скорых встреч!