Если вы используете Google таблицы для хранения данных, например, списка рецептов или каталога товаров, вы можете получить их в чат-боте с помощью блока HTTP-запрос.
Блок получает данные только с первого листа таблицы.
Для чтения данных из таблицы, к ней надо предоставить доступ по ссылке.
Для чтения данных из разных Google таблиц в зависимости от ввода пользователя:
-
Добавьте в сценарий экран с блоком Ввод текста.
Блок сохраняет в переменную
$table
реплику пользователя, в зависимости от которой выбирается таблица. -
Добавьте экран с блоком Условия.
В результате проверки условий, блок сохраняет идентификатор таблицы в переменную
$id
, которая используется при запросе данных.Пример условий:
$id = ($sheet == "Таблица 1") ? "<Идентификатор первой таблицы>" : false
$id = ($sheet == "Таблица 2") ? "<Идентификатор второй таблицы>" : false
$id = ($sheet == "Таблица 3") ? "<Идентификатор третьей таблицы>" : falseИдентификатор находится в веб-адресе таблицы в виде строки из букв и цифр.
-
Добавьте экран с блоком HTTP-запрос, который будет запрашивать данные из таблицы.
В поле URL блока укажите адрес сервиса, который преобразует данные таблицы в формат JSON:
https://smartapp-code.sberdevices.ru/tools/api/googlesheet2json?sheet=1&id=${id}
Блок использует HTTP метод GET для обращения к таблице с помощью переменной, полученной от блока Условия. Результат запроса сохраняется в переменной
$content
с помощью системной переменной$httpResponse
. -
Добавьте экран с блоком Текст, чтобы проверить результат чтения данных.
В блоке укажите переменную
$content
, полученную в результате HTTP-запроса.
Пример сценария чтения данных из разных Google таблиц в зависимости от ввода пользователя.
Добавление данных в Google-таблицу
Предварительная настройка Google-таблицы
Для добавления данных в Google-таблицу потребуется предварительная настройка доступа в ней. Для этого перейдите в таблицу и в правом верхнем углу выберите Настройки доступа. В параметрах доступа укажите Все, у кого есть ссылка.
Добавление скрипта для работы с данными
Добавьте функцию получения данных и декодирования строковых переменных. Для этого:
-
Выберите в Google-таблице пункт меню Расширения и далее - Apps Script.
-
Напишите функцию для обработки полученных данных.
В примере ниже в качестве данных передает ся две переменные:
- userName – строковый тип данных;
- phone – целый тип данных.
Текст функции:
function doPost(request) {
const {userName, phone} = request.parameter //получение параметров
const sheet = SpreadsheetApp.getActiveSheet() //получение активного листа
const lastRow = sheet.getLastRow() + 1 //получаем последнюю строчку таблицы
let text //переменная в которую запищем раскодированный текст
text = userName.split("-"); // разбивает строку на массив строк, используя заданный разделитель
let newArr = []; //собъявляем пустой массив для записи результата
for (let j = 0; j < text.length; j++) { //перебор элементов массива
newArr.push(String.fromCharCode(text[j])) //по коду получаем символ и записываем его в массив
}
newArr=newArr.join('') //преобразует и объединяет все элементы массива в одно строковое значение
sheet.getRange(`A${lastRow}`).setValue(newArr) //вывод значения переменной newArr в столбец А
sheet.getRange(`B${lastRow}`).setValue(phone) //вывод значения переменной newArr в столбец B
return "Все хорошо!"
}
- Начните развертывание.
Для этого:
- Нажмите Начать развертывание и далее — Новое развертывание.
Каждое изменение функции требует новое развертывание.
- Выберите тип развертывания — Веб-приложение.
- При появлении окна с запросом доступа нажмите Предоставить доступ.
- Нажмите Начать развертывание.
- Скопируйте URL в поле Веб-приложение. Ссылка имеет следующий вид:
https://script.google.com/macros/s/AKf....
. - Добавьте к скопированной ссылке параметры и присвойте значения переменным:
https://script.google.com/macros/s/AKf...?userName={{$session.userName}}&phone={{$session.phone}}
.
Создание HTTP-запроса к Google-таблице (POST)
-
Перейдите в личный кабинет Studio и откройте проект SaluteBot на инструменте Graph.
-
Добавьте в проект блоки для ввода имени и телефона.
-
На отдельный экран добавьте блок JS-код для кодирования строковой переменной и вставьте туда следующий код при обязательном соблюдении табуляцию:
$session.userName=[];
for (var i = 0; i < $session.name.length; i++) {
$session.userName.push($session.name.charCodeAt(i));
}
$session.userName = $session.userName.join('-')
-
На этот же экран добавьте блок HTTP-запроса.
-
В поле URL вставьте ранее полученную ссылку.
В результате данные, полученные из чат-бота, будут добавлены в Google-таблицу.