Поиск данных по таблице и передача их боту

У нас есть исходные данные в таблице

Чтобы упросить себе задачу, мы будем делать поиск данных в таблице, привязываясь к ID LeadConverter. Это нужно для того, чтобы мы могли взять ID LeadConverter и проверять данные по нему, так как это уникальный параметр, он никогда не повторяется.

Переходим на сайт https://script.google.com/

Нужно заходить на сайт под тем же аккаунтом, что мы создали таблицу, иначе скрипт будет работать некорректно

Нажимаем на "+ Создать проект"

Даем название проекту "Поиск данных по таблице. Квиз"

Далее вставляем удаляем текст в рабочей области и вставляем следующий код:

function doGet(e) {
  var sheet = SpreadsheetApp.openById("ВСТАВЛЯЕМ ID ТАБЛИЦЫ ИЗ 1 ПУНКТА ИНСТРУКЦИИ");

  // Принимаем значение, которое будем искать
  var Value = e?.parameter?.Value;
  // Принимаем столбец, в котором будем искать ("A", "B", "C"... "Z")
  var Column = e?.parameter?.Column;

  var lastRowIndex = sheet.getLastRow() + 1;
  var index = lastRowIndex;

  // Ищем значение по всем строкам таблицы (со 2й строки, в первой - заголовки)
  // если нет заголовков можно поменять let i = 2 на  let i = 1
  //      здесь
  for(let i = 2; i < lastRowIndex; i++) {
    if(sheet.getRange(Column + i).getValue() == Value) {
      index = i;
      break;
    }
  }


  let response = {}

  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    .split("")
    .forEach(el => {
      response[el] = sheet.getRange(el + index).getValue();
    })


  var obj =  {
    response,
  }

  return ContentService.createTextOutput(JSON.stringify(obj)).setMimeType(ContentService.MimeType.JSON);
}

Не забываем, первым делом, заменить текст ВСТАВЛЯЕМ ID ТАБЛИЦЫ ИЗ 1 ПУНКТА ИНСТРУКЦИИ, на ID таблицы, чтобы скрипт понимал куда писать данные

Что мы сделали в этом скрипте?

Ничего больше делать не надо :) Просто копируем шаблон, вставляем ID таблицы и опубликовываем скрипт :) Все настройки по поиску мы будем указывать в LeadConverter, когда будем собирать бота.

Скрипт готов, его осталось опубликовать и настроить передачу из бота.

Нажимаем на кнопку "Начать развертывание", далее "Новое развертывание"

Заполняем "Описание" и выбираем "У кого есть доступ" - пункт "Все"

Далее, нажимаем "Начать развертывание"

Повляется окно с запросом доступов к нашим данным, нажимаем "Предоставить доступ"

В сплывающем окне, выбираем аккаунт, с которого мы создали скрипт

Далее, гугл будет ругаться, что мы предоставляем данные неизвестному приложению. Но так как это приложение мы создаем для личного пользования - бояться нечего :)

Нажмимаем на "Advanced" (В русской версии будет кнопка "Дополнительно")

Далее в окне, нажимаем "Разрешить"

Далее у нас окрывается окно с ID развертывания и URL

Нам нужен URL, его мы будем использовать в боте и передавать данные

После внесения изменений и каждого нового развертывания, ID и URL меняются!

URL нужно будет заменять после внесений изменений в действии "Отправить через вебхук"

Нажимаем кнопку "ОК" после URL и нажимаем кнопку "Готово"

Переходим в LeadConverter

2. Создаем бота и вебхук для отправки данных в Google-таблицы

Первым делом, создаем блоки для менеджера, чтобы бот вначале получал информацию, что ищем и потом искал в Google-таблице

Первым делом создаем блок "Сообщение" с элементом "Вопрос" и выбираем тип ответа пользователя "Целое число"

Создаем действие и выбираем "Отправить через вебхук".

Заполняем все поля:

URL-адрес обработчика: Вставляем скопированную ссылку после публикации скрипта Отправить запрос методом: GET Сохранить результат: return

Далее нажимаем на "+Добавить параметр" и заполняем построчно параметры запроса

Value значение {{id_child}} Column значение A

Что мы сделали?

В Value указали данные, которые мы хотим найти В Column указали колонку, в которой мы ищем данные (От A до Z). Буква на английском языке.

Нажимаем "Сохранить" Далее, нам нужно полученный ответ от Google-таблицы вывести одним сообщением

Создаем блок "Сообщение" и пишем текст

Найдены данные!

‌ID: {{return.response.A}}
‌Name: {{return.response.B}}
‌Channel: {{return.response.C}}
‌Room: {{return.response.D}}
‌Finishing: {{return.response.E}}
‌Floor: {{return.response.F}}
‌Budget: {{return.response.G}}

Сохраняем, соединяем блоки и приступаем к тестированию.

Поиск по таблицам готов :) Теперь можно разобрать вопросы, которые могут возникнуть

Как искать данные по любому столбцу?

Нужно посмотреть в таблице, какая буква у этого столбца и указать ее в действии "Отправить через вебхук" в параметрах Column

Как правильно записать ответ от Google-таблиц?

У нас есть ответ по столбцу A Выглядит он так

{{return.response.A}}

Если мы заменим букву A на G, то мы "вытащим" ответ от Google-таблиц из столбца G

{{return.response.G}}

Если в вебхуке, заменяется переменная в пункте "Сохранить в переменную", то запись изменится так: {{переменная из вебхука.response.A}}

И так можно вытащить ответ из каждого столбца, если там заполнены данные

У вас остались вопросы? Задавайте их в нашу техподдержку 👇

Last updated