Работа с Google Sheets
- Установление связи с аккаунтом Google и таблицами в нем →
- Создание новой таблицы →
- Формирование данных для передачи в таблицу — из строки →
- Формирование данных для передачи в таблицу — из JSON →
- Формирование данных для передачи в таблицу — из переменной →
- Создать новую строку →
- Очистить строку →
- Удалить строку →
- Получить несколько строк →
- Найти несколько строк по значению →
- Получить строку →
- Найти строку по значению →
- Обновить строку →
- Найти и обновить строку →
Компонент Google Sheets создает таблицы на Google Диске, управляет данными в них и передаёт данные из таблиц в бота.
Функции:
- Создание новой таблицы с возможностью делать в ней операции.
- Работа с уже существующими таблицами.
- Добавление и обновление данных в таблице.
- Поиск и получение данных из таблицы.
- Удаление данных из ячеек с сохранением пустой строки и удаление строки вместе с данными.
Установление связи с аккаунтом Google и таблицами в нем
1. Нажмите кнопку Привязать Google Аккаунт, выберите свой аккаунт, дайте все разрешения Google для продолжения работы.
2. Перейдите в раздел Редактор бота, создайте новый экран и добавьте на него компонент Google Sheets.
3. Для выбора таблицы из тех, что уже есть на вашем Гугл-диске, откройте выпадающий список в поле Идентификатор таблицы. В этом списке будут таблицы, созданные в Ботмаме через компонент Гугл-таблицы.
Если вы создали таблицу на вашем гугл-аккаунте после создания компонента, то в выпадающем списке она не появится. Для интеграции такой таблицы, отройте эту таблицу и скопируйте ID таблицы из строки браузера. ID таблицы начинается после d/ и заканчивается до /edit. То есть в этом адресе:
https://docs.google.com/spreadsheets/d/17os3lomZVIUDyM2iF-eAXy0P9zoiAQ0QX1VPPhYE1kl/edit?gid=1804725695#gid=1804725695
нужна только эта часть:
17os3lomZVIUDyM2iF-eAXy0P9zoiAQ0QX1VPPhYE1kl
Вернитесь в редактор бота, нажмите на значок карандаша около поля Идентификатор таблицы. После этого вставьте ID таблицы в это поле.
Создание новой таблицы
1. Нажмите кнопку Создать новую таблицу.
2. Придумайте и впишите название вашей таблицы в появившемся поле Название таблицы, затем нажмите кнопку Создать.
3. После этого вы увидите уведомление о том, что таблица успешно создана.
4. Откройте свой Гугл диск, который вы привязали ранее, на нем вы увидите таблицу, которую вы только что создали через Ботмаму.
Формирование данных для передачи в таблицу
Во всех полях, кроме Операции и поля для создания новой таблицы, можно использовать переменные.
Например, в поле Название листа можно подставить не только текст вроде Лист1, но и значение переменной.
Поля для номеров строк таблиц, для буквенных обозначений столбцов и т.д. ведут себя также — вместо номера строки, каких как 1,2,3 или букв для столбца, вы можете выводить переменные, предварительно записав в их значение нужные цифры или буквы.
В операциях «Создать новую строку», «Найти строку по значению», «Обновить строку» и «Найти и обновить строку» вы можете выбрать из чего формировать строку: из переменной, из строки или из JSON.
Рассмотрим каждый способ более подробно.
Из строки
1. Отметьте чек-бокс Из строки.
2. В поле Столбец впишите букву, которая соответствует столбцу таблицы в которую вы хотите добавить информацию.
Буквы для поля Столбец могут быть только английскими и заглавными.
3. В поле Значение впишите то, что должно быть в указанном вами столбце.
4. Нажмите кнопку Добавить перед тем, как вписать новое значение для нового столбца.
После сохранения и активации компонента, указанные значения появятся на следующей строке, если в таблице что-то есть. Первой строкой — если таблица была пустая.
В поля Столбец и Значения можно записывать не только статичные данные, но и выводить переменные. Значение переменной попадет в таблицу.
Например, вы можете записать ответы пользователя в переменные с помощью Ввода от пользователя или Развилки, затем вывести эти переменные в компоненте Google Sheets.
После срабатывания компонента, все что отправил пользователь боту, окажется в вашей таблице.
Вы можете комбинировать статичные данные и данные из переменных. Например здесь, в столбце А, значение Заявка на консультацию является статичным, а значит передалось вместе с сообщением от пользователя автоматически.
Из JSON
1. Отметьте чек-бокс Из JSON.
2. В поле Записать строку добавьте информацию в виде списка такого вида:
{ "A": "Дедка", "B": "Бабка", "C": "Внучка", "D": "Жучка", "E": "Кошка", "F": "Мышка" }
Буквы для столбцов могут быть только английскими и заглавными.
- здесь A, B, C, D, E, F — столбцы, куда попадет информация,
- значения напротив букв, в нашем случае это Дедка, Бабка, Внучка, Жучка, Кошка, Мышка — попадут в указанные напротив этих значений столбцы.
Буквы обозначающие столбцы: A, B, C, D, E, F могут быть только английскими и заглавными. В ином случае, данные не попадут в таблицу.
После сохранения и активации, информация появится на первой строке таблицы, если таблица была пустая. Если в таблице уже что-то было, то информация запишется на следующей строке.
В поля для столбцов и значений можно записывать не только статичные данные, но и выводить переменные. Значение переменной попадет в таблицу.
Например, вы можете записать ответы пользователя в переменные с помощью Ввода от пользователя или Развилки, затем вывести эти переменные в компоненте Google Sheets, в поле JSON c объектом, который нужно записать в строку.
После срабатывания компонента, все что отправил пользователь боту, окажется в вашей таблице.
Вы можете комбинировать статичные данные и данные из переменных. Например здесь, в столбце А, значение Заявка на консультацию является статичным, а значит передалось вместе с сообщением от пользователя автоматически.
Из переменной
Перед тем, как передавать в Гугл-таблицу переменные, их нужно объявить в боте.
1. Добавьте на экран Запись переменной, придумайте для нее Имя и Значение.
2. Тип данных поменяйте на Объект из JSON.
3. В Значение добавьте объект такого вида:
{"A": "Дедка", "B": "Бабка", "C": "Внучка", "D": "Жучка", "E": "Кошка", "F": "Мышка"}
- здесь A, B, C, D, E, F — это названия столбцов таблицы, куда попадут значения,
- Дедка, Бабка, Внучка, Жучка, Кошка, Мышка — это значения, которые передадутся в таблицу.
Вы можете использовать этот шаблон, поменяв значения из примера на свои. В этом случае, в таблицу попадут ваши значения.
Буквы обозначающие столбцы: A, B, C, D, E, F могут быть только английскими и заглавными. В ином случае, данные не попадут в таблицу.
4. Следующим добавьте компонент Google Sheets и выберите таблицу и лист, куда будет попадать информация. Затем выберите нужную операцию.
5. Отметьте чек-бокс Из переменной.
6. В Имя переменной с объектом для записи стороки добавьте ранее записанную переменную. В нашем примере переменная будет выглядеть так: varForRepka
После сохранения и активации компонента, указанные значения появятся на следующей строке, если в таблице что-то есть, или первой строкой, если таблица была пустая.
В поля для столбцов и значений можно записывать не только статичные данные, но и выводить переменные. Значение переменной попадет в таблицу.
Например, вы можете записать ответы пользователя в переменные с помощью Ввода от пользователя или Развилки, затем вывести эти переменные в объекте в Записи переменной.
После этого вы можете передать имя переменной с объектом, в компоненте Google Sheets.
После срабатывания компонента, все что отправил пользователь боту, окажется в вашей таблице.
Вы можете комбинировать статичные данные и данные из переменных. Например здесь, в столбце А, значение Заявка на консультацию является статичным, а значит передалось вместе с сообщением от пользователя автоматически.
Дальнейшая настройка операций с таблицами
Создать новую строку
Добавляет данные в таблицу в указанные столбцы, формируя новую строку.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Создать новую строку.
- Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Пример поведения таблиц для операции «Создать новую строку»
Допустим, изначально ваша таблица вообще не была заполнена:
В настройках компонента вы указали первый лист, столбцы от A до F и указали значения для передачи.
После активации компонента, в документ добавятся указанные вами значения в нужные столбцы.
Очистить строку
Очищает указанную строку сохраняя порядок остальных строк.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Очистить строку.
- Напишите номер строки, столбцы которой будут очищены.
- Укажите до какого столбца будет очищаться строка. Вы можете указать одну английскую заглавную букву, например C. Также вы можете указать две буквы DD, BB и т.д., если в вашей таблице большое количество колонок и их все нужно очистить.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Буквы для поля Очистить до столбца могут быть только английскими и заглавными.
Пример поведения таблиц для операции «Очистить строку»
Допустим, изначально в вашей таблице было две заполненные строчки на первом листе, как на скриншоте ниже:
В настройках компонента было указано:
- Номер строки: 1
- Диапазон столбцов для очистки: A:C
Это значит что в первой строке очистится диапазон от A до C. После активации компонента, документ будет выглядеть следующим образом:
Удалить строку
Удаляет строку по указанному номеру, сдвигая последующие строки вверх.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Удалить строку.
- Напишите номер строки, которую нужно удалить.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Пример поведения таблиц для операции «Удалить строку»
Допустим, изначально в вашей таблице было три заполненные строчки на первом листе, как на скриншоте ниже:
Если в настройках компонента вы указали Номер строки, которую нужно удалить: 2, то удалится вторая строка, а третья сдвинется на вторую после активации компонента.
Получить несколько строк
Возвращает до 100 строк в формате JSON из выбранного диапазона
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Получить несколько строк.
- Запишите нужный диапазон столбцов в формате A:C или A:CС, если столбцов много. Все буквы должны быть английскими и заглавными. Диапазон всегда читается включительно. То есть, если вы указали диапазон A:C или A:CС, в бот придут столбцы от A до C или от A до СC включительно.
- Выберите нужное количество строк для вывода в бот.
- Задайте номер строки для начала отсчета.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения
Пример поведения таблиц для операции «Получить несколько строк»
Допустим, ваша таблица выглядит как на скриншоте ниже и вам нужно получить данные из 4 и 5 строки, из столбцов с A до D включительно:
В настройках компонента было указано:
- Диапазон столбцов: A:D
- Количество строк: 2
- Номер строки для начала отсчета: 4
После сохранения и активации компонента с такими настройками, в боте выведется информация из 4 и 5 строк в диапазоне от A до D.
Выводить строки можно с помощью хелпера:
stringify
Если переменная не была задана, то данные можно вывести таким образом:
{{stringify last_spreadsheet}}
По умолчанию ответ от таблиц хранится в переменной last_spreadsheet, но этот ответ можно записать в другую переменную. Для этого откройте настройки компонента и впишите свою переменную в поле Имя переменной для результата.
Если переменная не была задана, то данные можно вывести таким образом:
{{stringify last_spreadsheet}}
Чтобы список пришел упорядоченным, используйте этот шаблон:
{{#each last_spreadsheet.rows}} {{#each this}} {{#not (eq @key "row")}} {{@key}}. {{this}} {{/not}} {{/each}} {{/each}}
Найти несколько строк по значению
Ищет и возвращает информацию по нескольким строкам (до 100) по заданным значениям.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Найти несколько строк по значению.
- Укажите столбец и искомое значение, которое нужно найти. Если в указанном столбце не будет указанного вами значения, то бот пришлет null.
- После этого укажите количество строк, которые нужно прислать из таблицы. Если вашему значению соответствует 50 строк, но вы укажете 20, то придут первые 20.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Пример поведения таблиц для операции «Найти несколько строк по значению»
Допустим, в вашем документе три строчки с именем Таня, но вы ищите первые две — компонент настроен на Количество строк: 2. Также в компоненте указан столбец для поиска: А, Значение: Таня.
С этими настройками вы получите всю информацию из строчек где есть Таня в столбце А.
Так как запрос был на 2 строки, то придут первые две строки, несмотря на то, что в таблице есть еще подходящие значения.
Выводить строки можно с помощью хелпера:
stringify
Если переменная не была задана, то данные можно вывести таким образом:
{{stringify last_spreadsheet}}
Чтобы список пришел упорядоченным, используйте этот шаблон:
{{#each last_spreadsheet.rows}} {{#each this}} {{#not (eq @key "row")}} {{@key}}. {{this}} {{/not}} {{/each}} {{/each}}
Получить строку
Возвращает строку в формате JSON.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Получить строку.
- Укажите номер строки, которую вы хотите получить.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Пример поведения таблиц для операции «Получить строку»
Допустим, нам нужно получить шестую строку из документа на скриншоте ниже.
Если вписать в настройках Номер строки: 6, то бот пришлет 6 строку документа.
Выводить строку можно с помощью хелпера:
stringify
Если переменная не была задана, то данные можно вывести таким образом:
{{stringify last_spreadsheet}}
Чтобы список пришел упорядоченным, используйте этот шаблон:
{{#each last_spreadsheet.rows}} {{#each this}} {{#not (eq @key "row")}} {{@key}}. {{this}} {{/not}} {{/each}} {{/each}}
Найти строку по значению
Ищет строку по значению в одном или нескольких столбцах. Если строка найдена, возвращается её номер и данные.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Найти строку по значению.
- Укажите столбец, где будет производиться поиск, а также значение для поиска.
- При необходимости активируйте чек-бокс Искать снизу вверх.
- При необходимости активируйте чек-бокс Создать новую строку, если значение не найдено, затем добавьте строку, переменную или объект json для добавления.
- Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Пример поведения таблиц для операции «Найти строку по значению» с активным чек-боксом «Искать снизу вверх», без создания новой стоки, если значение не найдено.
Компонент, заполненный как в примере, просто найдет первую строку снизу, где в столбце А есть значение Таня. Несмотря на то, что в таблице есть еще одно имя Таня в столбце А, в бот придет только первая найденная с конца таблицы строка.
Таблица для поиска выглядит так:
В боте будет первая снизу строчка, подходящая под параметры заполненные в компоненте.
Выводить строку можно с помощью хелпера:
stringify
Если переменная не была задана, то данные можно вывести таким образом:
{{stringify last_spreadsheet}}
Чтобы список пришел упорядоченным, используйте этот шаблон:
{{#each last_spreadsheet.rows}} {{#each this}} {{#not (eq @key "row")}} {{@key}}. {{this}} {{/not}} {{/each}} {{/each}}
Так как в компоненте не активен чек-бокс Создать новую строку, если значение не найдено, то если бы в таблице не было имени Таня, бот бы ничего не прислал и новая строка бы не создалась и таблица осталась бы неизменной.
Пример поведения таблиц для операции «Найти строку по значению» с активным чек-боксом «Создать новую строку, если значение не найдено».
Если в настройках компонента отмечен чек-бокс «Создать новую строку, если значение не найдено», то обязательно нужно указать значения для добавления. Эти значения могут быть взяты из строки, из переменной или из JSON.
После активации компонента с настройками как в примере выше, в таблицу попадет новая строка, она будет последней. Бот не нашел значение по заданным параметрам, поэтому создал новую строку, значения для которой вы указали при настройке. Эта же строка вывелась в боте.
Обновить строку
Изменяет данные в существующей строке по ее номеру, сохраняя порядок строк в таблице.
Если вы обновляете часть столбцов не с начала строки, то все ячейки до первого указанного столбца очищаются, обновлённые заполняются новыми значениями, а ячейки после последнего указанного столбца остаются без изменений. Учитывайте это поведение, чтобы не потерять важные данные в начале строки.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Обновить строку.
- Напишите номер строки, которую нужно обновить.
- Укажите столбец и новое значение строки.
- Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Пример поведения таблиц для операции «Обновить строку»
Если в настройки компонента внести Номер строки: 1 и добавить новые значения для колонок А, B и C, как на скриншоте выше, то после активации компонента, первые три столбца первой строчки поменяются на те, что вы указали в компоненте.
Например, если до обновления первая строка имела такие данные:
То активировав компонент с указанными настройками, в первой строке поменяются первые три столбца. Если бы в компоненте были указаны новые значения для остальных столбцов, то поменялись бы и они. В итоге таблица будет выглядеть так:
Найти и обновить строку
Изменяет данные в найденной по значению строке, сохраняя порядок строк в таблице.
Если вы обновляете часть столбцов не с начала строки, то все ячейки до первого указанного столбца очищаются, обновлённые заполняются новыми значениями, а ячейки после последнего указанного столбца остаются без изменений. Учитывайте это поведение, чтобы не потерять важные данные в начале строки.
- Выберите таблицу из существующих или создайте новую.
- Выберите лист для действий или оставьте лист по умолчанию.
- Выберите операцию — Найти и обновить строку.
- Укажите столбцы и значения строк, которые нужно найти и обновить.
- Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
- При необходимости отметьте чек-бокс Создать новую строку, если значение не найдено. В этом случае будет создана новая строка в конце таблицы со значением, которое вы указали.
- При необходимости отметьте чек-бокс Искать снизу вверх. В этом случае поиск и обновление будет проходить с конца таблицы, а не с ее начала.
- При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
- При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
- Сохраните изменения.
Пример поведения таблиц для операции «Найти и обновить строку» без создания новой стоки, если значение не найдено
Компонент, заполненный как в этом примере, найдет в столбце А имя Агнесса и поменяет первые три столбца в найденной строчке.
Изначально таблица выглядит так:
Если бы в таблице были еще строчки подходящие под параметры заданные в компоненте, то есть в столбце А было имя Агнесса еще в одной строке, то бот все равно бы поменял только первую строку.
С чек-боксом «Искать снизу вверх» поменялась бы последняя строка, но тоже лишь одна.
Если бы в таблице не нашлось подходящего значения, то есть в столбце А, имени Агнесса не было ни в одной из строк, то в таблице ничего не поменялось, т.к. в данном примере не отмечен чек-бокс «Создать новую строку, если значение не найдено».
В нашем случае, после активации компонента, в строке где находится Агнесса, поменялось три столбца, т.к. в компоненте было указано три столбца для изменения. С другими настройками вы сможете менять содержание любого количества столбцов в найденной по значению строке.
Пример поведения таблиц для операции «Найти и обновить строку» с активным чек-боксом «Создать новую строку, если значение не найдено».
После активации компонента с настройками как в примере выше, в таблицу попадет новая строка, она будет последней. Бот не нашел значение по заданным параметрам, чтобы его поменять, поэтому создал новую строку, значения для которой вы указали при настройке.