Работа с Google Sheets

x
Рекомендуй и зарабатывайРекомендуй Botmother коллегам и получай кешбэк от их оплат

Компонент Google Sheets создает таблицы на Google Диске, управляет данными в них и передаёт данные из таблиц в бота.

Функции:

  1. Создание новой таблицы с возможностью делать в ней операции.
  2. Работа с уже существующими таблицами.
  3. Добавление и обновление данных в таблице.
  4. Поиск и получение данных из таблицы.
  5. Удаление данных из ячеек с сохранением пустой строки и удаление строки вместе с данными.

Установление связи с аккаунтом 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.

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

Вы можете комбинировать статичные данные и данные из переменных. Например здесь, в столбце А, значение Заявка на консультацию является статичным, а значит передалось вместе с сообщением от пользователя автоматически.

Дальнейшая настройка операций с таблицами

Создать новую строку

Добавляет данные в таблицу в указанные столбцы, формируя новую строку.

  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Создать новую строку.
  4. Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
  5. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  6. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  7. Сохраните изменения.

Пример поведения таблиц для операции «Создать новую строку»

Допустим, изначально ваша таблица вообще не была заполнена:

В настройках компонента вы указали первый лист, столбцы от A до F и указали значения для передачи.

После активации компонента, в документ добавятся указанные вами значения в нужные столбцы.

Очистить строку

Очищает указанную строку сохраняя порядок остальных строк.

  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Очистить строку.
  4. Напишите номер строки, столбцы которой будут очищены.
  5. Укажите до какого столбца будет очищаться строка. Вы можете указать одну английскую заглавную букву, например C. Также вы можете указать две буквы DD, BB и т.д., если в вашей таблице большое количество колонок и их все нужно очистить.
  6. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  7. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  8. Сохраните изменения.
Буквы для поля Очистить до столбца могут быть только английскими и заглавными.

Пример поведения таблиц для операции «Очистить строку»

Допустим, изначально в вашей таблице было две заполненные строчки на первом листе, как на скриншоте ниже:

В настройках компонента было указано:

  • Номер строки: 1
  • Диапазон столбцов для очистки: A:C

Это значит что в первой строке очистится диапазон от A до C. После активации компонента, документ будет выглядеть следующим образом:

Удалить строку

Удаляет строку по указанному номеру, сдвигая последующие строки вверх.

  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Удалить строку.
  4. Напишите номер строки, которую нужно удалить.
  5. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  6. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  7. Сохраните изменения.

Пример поведения таблиц для операции «Удалить строку»

Допустим, изначально в вашей таблице было три заполненные строчки на первом листе, как на скриншоте ниже:

Если в настройках компонента вы указали Номер строки, которую нужно удалить: 2, то удалится вторая строка, а третья сдвинется на вторую после активации компонента.

Получить несколько строк

Возвращает до 100 строк в формате JSON из выбранного диапазона

  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Получить несколько строк.
  4. Запишите нужный диапазон столбцов в формате A:C или A:CС, если столбцов много. Все буквы должны быть английскими и заглавными. Диапазон всегда читается включительно. То есть, если вы указали диапазон A:C или A:CС, в бот придут столбцы от A до C или от A до СC включительно.
  5. Выберите нужное количество строк для вывода в бот.
  6. Задайте номер строки для начала отсчета.
  7. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  8. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  9. Сохраните изменения

Пример поведения таблиц для операции «Получить несколько строк»

Допустим, ваша таблица выглядит как на скриншоте ниже и вам нужно получить данные из 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) по заданным значениям.

  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Найти несколько строк по значению.
  4. Укажите столбец и искомое значение, которое нужно найти. Если в указанном столбце не будет указанного вами значения, то бот пришлет null.
  5. После этого укажите количество строк, которые нужно прислать из таблицы. Если вашему значению соответствует 50 строк, но вы укажете 20, то придут первые 20.
  6. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  7. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  8. Сохраните изменения.

Пример поведения таблиц для операции «Найти несколько строк по значению»

Допустим, в вашем документе три строчки с именем Таня, но вы ищите первые две — компонент настроен на Количество строк: 2. Также в компоненте указан столбец для поиска: А, Значение: Таня.

С этими настройками вы получите всю информацию из строчек где есть Таня в столбце А.

Так как запрос был на 2 строки, то придут первые две строки, несмотря на то, что в таблице есть еще подходящие значения.

Выводить строки можно с помощью хелпера:

stringify

Если переменная не была задана, то данные можно вывести таким образом:

{{stringify last_spreadsheet}}

Чтобы список пришел упорядоченным, используйте этот шаблон:

{{#each last_spreadsheet.rows}}
{{#each this}}
{{#not (eq @key "row")}}
{{@key}}. {{this}}
{{/not}}
{{/each}}
{{/each}}

Получить строку

Возвращает строку в формате JSON.

  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Получить строку.
  4. Укажите номер строки, которую вы хотите получить.
  5. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  6. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  7. Сохраните изменения.

Пример поведения таблиц для операции «Получить строку»

Допустим, нам нужно получить шестую строку из документа на скриншоте ниже.

Если вписать в настройках Номер строки: 6, то бот пришлет 6 строку документа.

Выводить строку можно с помощью хелпера:

stringify

Если переменная не была задана, то данные можно вывести таким образом:

{{stringify last_spreadsheet}}

Чтобы список пришел упорядоченным, используйте этот шаблон:

{{#each last_spreadsheet.rows}}
{{#each this}}
{{#not (eq @key "row")}}
{{@key}}. {{this}}
{{/not}}
{{/each}}
{{/each}}

Найти строку по значению

Ищет строку по значению в одном или нескольких столбцах. Если строка найдена, возвращается её номер и данные.

  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Найти строку по значению.
  4. Укажите столбец, где будет производиться поиск, а также значение для поиска.
  5. При необходимости активируйте чек-бокс Искать снизу вверх.
  6. При необходимости активируйте чек-бокс Создать новую строку, если значение не найдено, затем добавьте строку, переменную или объект json для добавления.
  7. Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
  8. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  9. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  10. Сохраните изменения.

Пример поведения таблиц для операции «Найти строку по значению» с активным чек-боксом «Искать снизу вверх», без создания новой стоки, если значение не найдено.

Компонент, заполненный как в примере, просто найдет первую строку снизу, где в столбце А есть значение Таня. Несмотря на то, что в таблице есть еще одно имя Таня в столбце А, в бот придет только первая найденная с конца таблицы строка.

Таблица для поиска выглядит так:

В боте будет первая снизу строчка, подходящая под параметры заполненные в компоненте.

Выводить строку можно с помощью хелпера:

stringify

Если переменная не была задана, то данные можно вывести таким образом:

{{stringify last_spreadsheet}}

Чтобы список пришел упорядоченным, используйте этот шаблон:

{{#each last_spreadsheet.rows}}
{{#each this}}
{{#not (eq @key "row")}}
{{@key}}. {{this}}
{{/not}}
{{/each}}
{{/each}}

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

Пример поведения таблиц для операции «Найти строку по значению» с активным чек-боксом «Создать новую строку, если значение не найдено».

Если в настройках компонента отмечен чек-бокс «Создать новую строку, если значение не найдено», то обязательно нужно указать значения для добавления. Эти значения могут быть взяты из строки, из переменной или из JSON.

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

Обновить строку

Изменяет данные в существующей строке по ее номеру, сохраняя порядок строк в таблице.

Если вы обновляете часть столбцов не с начала строки, то все ячейки до первого указанного столбца очищаются, обновлённые заполняются новыми значениями, а ячейки после последнего указанного столбца остаются без изменений. Учитывайте это поведение, чтобы не потерять важные данные в начале строки.
  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Обновить строку.
  4. Напишите номер строки, которую нужно обновить.
  5. Укажите столбец и новое значение строки.
  6. Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
  7. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  8. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  9. Сохраните изменения.

Пример поведения таблиц для операции «Обновить строку»

Если в настройки компонента внести Номер строки: 1 и добавить новые значения для колонок А, B и C, как на скриншоте выше, то после активации компонента, первые три столбца первой строчки поменяются на те, что вы указали в компоненте.

Например, если до обновления первая строка имела такие данные:

То активировав компонент с указанными настройками, в первой строке поменяются первые три столбца. Если бы в компоненте были указаны новые значения для остальных столбцов, то поменялись бы и они. В итоге таблица будет выглядеть так:

Найти и обновить строку

Изменяет данные в найденной по значению строке, сохраняя порядок строк в таблице.

Если вы обновляете часть столбцов не с начала строки, то все ячейки до первого указанного столбца очищаются, обновлённые заполняются новыми значениями, а ячейки после последнего указанного столбца остаются без изменений. Учитывайте это поведение, чтобы не потерять важные данные в начале строки.
  1. Выберите таблицу из существующих или создайте новую.
  2. Выберите лист для действий или оставьте лист по умолчанию.
  3. Выберите операцию — Найти и обновить строку.
  4. Укажите столбцы и значения строк, которые нужно найти и обновить.
  5. Выберите, откуда будет передаваться строка: Из строки, Из JSON или Из переменной и добавьте необходимую информацию для передачи в таблицу, соответственно выбранному вами способу.
  6. При необходимости отметьте чек-бокс Создать новую строку, если значение не найдено. В этом случае будет создана новая строка в конце таблицы со значением, которое вы указали.
  7. При необходимости отметьте чек-бокс Искать снизу вверх. В этом случае поиск и обновление будет проходить с конца таблицы, а не с ее начала.
  8. При необходимости задайте экраны, которые выполнятся при удачном и неудачном выполнении операции.
  9. При необходимости укажите Имя переменной для результата в настройках компонента. В эту переменную попадут буквенные обозначения столбцов — A, B, C, D и т.д. и текст, который передался в эти столбцы. По умолчанию эти данные попадают в переменную last_spreadsheet
  10. Сохраните изменения.

Пример поведения таблиц для операции «Найти и обновить строку» без создания новой стоки, если значение не найдено

Компонент, заполненный как в этом примере, найдет в столбце А имя Агнесса и поменяет первые три столбца в найденной строчке.

Изначально таблица выглядит так:

Если бы в таблице были еще строчки подходящие под параметры заданные в компоненте, то есть в столбце А было имя Агнесса еще в одной строке, то бот все равно бы поменял только первую строку.

С чек-боксом «Искать снизу вверх» поменялась бы последняя строка, но тоже лишь одна.

Если бы в таблице не нашлось подходящего значения, то есть в столбце А, имени Агнесса не было ни в одной из строк, то в таблице ничего не поменялось, т.к. в данном примере не отмечен чек-бокс «Создать новую строку, если значение не найдено».

В нашем случае, после активации компонента, в строке где находится Агнесса, поменялось три столбца, т.к. в компоненте было указано три столбца для изменения. С другими настройками вы сможете менять содержание любого количества столбцов в найденной по значению строке.

Пример поведения таблиц для операции «Найти и обновить строку» с активным чек-боксом «Создать новую строку, если значение не найдено».

После активации компонента с настройками как в примере выше, в таблицу попадет новая строка, она будет последней. Бот не нашел значение по заданным параметрам, чтобы его поменять, поэтому создал новую строку, значения для которой вы указали при настройке.

В начало ↑