# Google-таблицы

{% hint style="danger" %}
Внимание! Устаревшее!&#x20;

Для лучшей работы с данными загрузите их в [Таблицы Salebot,](https://docs.salebot.pro/integracii/google/broken-reference) тогда Ваши боты будут работать намного быстрее и без ошибок, связанных с запросами к google-таблицам.
{% endhint %}

* [Как подготовить Google таблицу](#kak-podgotovit-google-tablicu)
* [Как написать json запрос](#kak-napisat-json-zapros)
* [Как осуществлять построчную запись в определенные столбцы](#1.-postrochnaya-zapis-v-opredelennye-stolbcy)
* [Как осуществлять запись данных в определенные ячейки](#2.-zapis-dannykh-v-opredelennye-yacheiki)
* [Как осуществлять удаление записи из конкретных ячеек](#1.-udalenie-zapisi-iz-konkretnykh-yacheek)
* [Как осуществлять запись в первую пустую ячейку строки](#3.-zapis-v-pervuyu-pustuyu-yacheiku-stroki)
* [Как осуществлять чтение данных из таблицы](#kak-osushestvlyat-chtenie-dannykh-iz-tablicy)
* [Как искать текст в таблице (вывод первой подходящей строки)](#1.-kak-iskat-tekst-v-tablice-vyvod-pervoi-podkhodyashei-stroki)
* [Как осуществлять поиск по всем листам и выводить результат поиска в виде списка](#2.-kak-osushestvlyat-poisk-po-vsem-listam-i-vyvodit-rezultat-poiska-v-vide-spiska)
* [Как вывести список всех совпадений из таблицы](#3.-kak-vyvesti-spisok-vsekh-sovpadenii-iz-tablicy)
* [Как полностью удалить строку (со смещением)](#2.-kak-udalit-stroku-polnostyu-so-smesheniem)
* [Как полностью удалить колонку (со смещением)](#3.-kak-udalit-kolonku-polnostyu-so-smesheniem)
* [Как сделать кнопки для выбора листа в таблице](#kak-sdelat-knopki-dlya-vybora-lista-v-tablice)
* [Как работать через свой аккаунт](#rabota-cherez-svoi-akkaunt)
* [Как работать с буквами колонок](#kak-rabotat-s-bukvami-kolonok)
* [Как задать переменные в именах колонок](#kak-zadat-peremennye-v-imenakh-kolonok)
* [Как осуществлять удаление из таблицы](#kak-udalit-dannye)
* [Как добавить лист в таблицу](#kak-dobavit-list-v-tablicu)
* [Возможные ошибки](#vozmozhnye-oshibki)
* [Функции (API) для работы с Google-таблицей](#funkcii-api-dlya-raboty-s-google-tablicei)

Для работы вам потребуется:

1. Google-таблица, открытая на редактирование для всех, у кого есть ссылка&#x20;
2. URL-функции запроса
3. Параметры запроса

## ОБЩАЯ ИНФОРМАЦИЯ

### Как подготовить Google-таблицу

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FoHnQveCSrxFaahdoVqtj%2Fimage.png?alt=media\&token=70947704-4851-40ad-bc95-8f9a15cf3f38)

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FslYVV6e7mn5Crq6RIov8%2Fimage.png?alt=media\&token=a40962cc-19d5-4439-aa71-ff665866e3ca)

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FN6kqCf6nCcpzJJIKoHpj%2Fimage.png?alt=media\&token=7f40decf-1866-433f-9d8a-3a9f0e7ee4ef)

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F0qPEC1QXuq8Yprb3U6fp%2Fimage.png?alt=media\&token=5daa8ba8-954d-44cb-973a-62aac595b6e2)

### Как написать json-запрос

Переходим в настройки блока, в котором у нас будет осуществляться запись данных таблицу.&#x20;

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F8uxSGzzgx0YzH2aVLffl%2Fimage.png?alt=media&#x26;token=65c43440-4fe0-4a80-a009-1414c302f6f4" alt=""><figcaption></figcaption></figure>

1. Добавляем раздел API-запрос.
2. Выбираем тип запроса "POST-json"
3. Переходим к заполнению полей запроса:

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FLk6MQYQSVfPt5AGPk2Ni%2Fimage.png?alt=media&#x26;token=c36957bc-2048-41af-a6a9-786b2218d8b5" alt=""><figcaption></figcaption></figure>

**URL запроса** - путь к функции для выполнения запроса

**Сохраняемые значения** - перечень параметров ответа запроса с указанием имен переменных, в которые следует сохранить результат в формате: **параметр\_из\_запроса -> ваша\_переменная**

> Если в ответ получаем параметры сложной структуры, то разбираем их так:&#x20;
>
> "cell\_number":{"row":4,"col":2}\
> cell\_number|row -> Строка; cell\_number|col -> Столбец

**Заголовок запроса** - заполняется при необходимости. Чаще всего здесь передаются форматы передаваемых данных и/или токен доступа

**JSON-параметры** - тело запроса, в котором прописываются параметры передаваемых данных в формате:

**{"id": "ид таблицы", "действие":{"имя\_1":"значение", "имя\_2": "#{переменная}"},"creds\_path": "путь к вашему файлу с данными для авторизации"}**

Для понимания в какой структуре запрос возвращает ответ, напишите в поле 'Сообщение' вывод значения переменной #{custom\_answer}. <br>

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F4ImwxNGAL48xazxIEYJq%2Fimage.png?alt=media&#x26;token=7d7d42f8-41d0-4ec1-8ab4-88054c778138" alt=""><figcaption><p>Получение результата выполнения API-запроса в виде сообщения</p></figcaption></figure>

### Где взять идентификатор id таблицы

Идентификатор таблицы содержится в ссылке (выделено цветом, после d/ и до /edit):

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FaX3gGPSkw8Hufbf1c4hk%2Fimage.png?alt=media&#x26;token=82292fd1-d712-4dc7-a103-b00f9ca65de7" alt=""><figcaption></figcaption></figure>

### Где взять ключ доступа к данным таблицы **creds\_path**

Подробно создание сервисного аккаунта, получение и использование ключа доступа к данным таблицы рассмотрено [тут](https://docs.salebot.pro/integracii/google#podgotovka-servisnogo-akkaunta)

{% embed url="<https://docs.salebot.pro/integracii/google#podgotovka-servisnogo-akkaunta>" %}
Создание сервисного аккаунта
{% endembed %}

## **КАК РАБОТАТЬ С GOOGLE-ТАБЛИЦАМИ**

Основные действия с таблицами:

* Запись
* Чтение
* Удаление
* Поиск

Далее подробно разберем каждое из действий над таблицами.

### Как **записать данные**

#### **1. Построчная запись в определенные столбцы**

Вы можете собрать множество данных от пользователя и записать их в первую свободную в таблице строку. Осуществляется с помощью функции **mapping.**&#x20;

{% hint style="danger" %}
В таблице должна быть заполнена шапка (хотя бы одна ячейка в первой строке)
{% endhint %}

<mark style="color:red;">**!**</mark>**&#x20;URL функции:** <https://store.salebot.pro/function/gsheets>

<mark style="color:red;">**!**</mark>**&#x20;JSON-Параметры запроса**&#x20;

**`{"id": "ид таблицы", "mapping":{"a":"#{переменная}", "b": "#{еще}", "c": "#{еще}", "d":"просто текст"}}`**

Если вы хотите записывать строки не на первом листе, то надо добавить в запрос параметр list\_name:

**`{"id": "ид таблицы", "mapping":{"a":"просто текст", "b": "#{переменная}"}, "list_name": "Название листа"}`**

Параметры:

id - идентификатор таблицы[\*](#gde-vzyat-identifikator-id-tablicy)\
a, b, c, d - это как раз имена столбцов\
list\_name - название вашего листа (например, "Лист2")

> Пример ответа:  **{"number\_row":8}**

Если проблем при выполнении запроса не возникло, то в ответ приходит номер строки, который можно сохранить и использовать для дальнейшей работы.

<mark style="color:red;">**!**</mark> Если вы не хотите рисковать и желаете ограничить доступ к своей таблице лишь своей учетной записью, то надо передавать параметр creds\_path с url вашего файла с данными. Подробнее об этом ниже в пункте Работа через свой аккаунт:&#x20;

**`{"id": "ид таблицы", "mapping":{"a":"#{переменная}", "b": "#{еще}", "c": "#{еще}", "d":"просто текст"},"creds_path": "путь к вашему файлу с данными для авторизации"}`**

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FX091JANJ0ZtylAdMIFLd%2Fimage.png?alt=media&#x26;token=234c8042-58c5-4336-b046-e71c7f2c328d" alt=""><figcaption></figcaption></figure>

#### **2. Запись данных в определенные ячейки**

<mark style="color:red;">**!**</mark>**&#x20;URL функции:** <https://store.salebot.pro/function/gsheets>

<mark style="color:red;">**!**</mark> JSON-Параметры запроса: \
`{"id": "ид таблицы", "write":{"a1":"#{переменная}", "b3": "#{еще}", "c1": "#{еще}", "d20":"просто текст"}}.` \
Запись осуществляется в конкретные ячейки, которые вы укажете (в нашем примере это a1, b3, c1, d20)

{% hint style="warning" %}
Нумерация колонок начинается с единицы.
{% endhint %}

Если вы хотите записывать строки не на первом листе, то надо добавить в запрос параметр list\_name:

`{"id": "ид таблицы", "write":{"a1":"#{переменная}", "b3": "#{еще}", "c1": "#{еще}", "d20":"просто текст"}, "list_name": "Название листа"}`

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

Если вы не хотите рисковать и желаете ограничить доступ к своей таблице лишь своей учетной записью, то надо передавать параметр creds\_path с url вашего файла с данными. Подробнее об этом ниже в пункте Работа через свой аккаунт:&#x20;

`{"id": "ид таблицы", "write":{"a1":"#{переменная}", "b3": "#{еще}", "c1": "#{еще}", "d20":"просто текст"}, "list_name": "Название листа","creds_path": "путь к вашему файлу с данными для авторизации"}`

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FjVkmIL6XSWQG0VXJkQWO%2Fimage.png?alt=media&#x26;token=ab5ea891-8c4c-4cf5-9fe0-f0e3fae7c454" alt=""><figcaption></figcaption></figure>

#### **3. Запись в первую пустую ячейку строки**

Вы можете записать данные в указанную строку, запись произойдет в пустую ячейку, справа от последней заполненной ячейки. Осуществляется с помощью функции **append\_in\_row**.

<mark style="color:blue;background-color:orange;">**URL функции:**</mark> <https://store.salebot.pro/function/gsheets&#x20>;

<mark style="background-color:orange;">JSON-Параметры запроса:</mark>&#x20;

**`{"id": "ид таблицы", "append_in_row":"номер строки", "value": "записываемое значение"}`**

Если вы хотите записывать строки не на первом листе, то надо добавить в запрос параметр list\_name:&#x20;

**`{"id": "ид таблицы", "append_in_row":"8", "value": "записываемое значение", "list_name": "Название листа"}`**&#x20;

Параметры:

**id** - это id вашей Google-таблицы. Вы можете получить его из ссылки на вашу таблицу (то, что выделено жирным в ссылке ниже):

<https://docs.google.com/spreadsheets/d/><mark style="background-color:red;">**1aUbbUaw2SRnJFAavv06Noa1EzumhyShKDm7ie6lYKc4**</mark>/edit#gid=0

**append\_in\_row** - номер строки, в которую производится запись&#x20;

**value** - значение, которое запишется в ячейку

Если проблем при выполнении запроса не возникло, то в ответ приходит **{"number\_col":10,"col\_name":"J3"}.** Вы можете сохранить эти номера и использовать для дальнейшей работы.

{% hint style="danger" %}
Если вы не хотите рисковать и желаете ограничить доступ к своей таблице лишь своей учетной записью, то надо передавать параметр creds\_path с url вашего файла с данными.&#x20;
{% endhint %}

Подробнее об этом [Работа через свой аккаунт](https://docs.salebot.pro/integracii/google#podgotovka-servisnogo-akkaunta): \
\&#xNAN;**`{"id": "ид таблицы", "mapping":{"a":"#{переменная}", "b": "#{еще}", "c": "#{еще}", "d":"просто текст"},"creds_path": "путь к вашему файлу с данными для авторизации"}`**

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FJzwAoz2JOpkPwLFkESg6%2Fimage.png?alt=media&#x26;token=39251f67-661e-4af6-9e03-92bdaae8cd08" alt=""><figcaption><p>Пример записи данных в первуюпустую ячейку 8 строки</p></figcaption></figure>

### Как **осуществлять чтение данных из таблицы**

<mark style="color:red;">**!**</mark>**&#x20;URL функции:** <https://store.salebot.pro/function/gsheets>

<mark style="color:red;">**!**</mark>**&#x20;JSON-Параметры запроса:**&#x20;

**`{"id": "ид таблицы", "read":{"a1":"a1", "b3":"b4", "c1":"c10", "d20":"a1"}}`**

Параметрами передавайте диапазоны. В примере "a1":"a1" возвращает одну ячейку, а "c1":"c10" 10 значений из колонки C. Возвращаемое значение хеш из адреса ячейки и значения из него.

{% hint style="warning" %}
Нумерация колонок идет с единицы.
{% endhint %}

Если вы хотите прочитать значения не на первом листе, то надо добавить в запрос параметр list\_name:

**`{"id": "ид таблицы", "read":{"a1":"a3", "b3": "b6"}, "list_name": "Название листа"}`**

Если проблем при выполнении запроса не возникло, то в ответ приходит название ячейки и ее содержимое:{"A1":"\u043f\u0440\u0438\u0432\u0435\u0442","A2":"\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f","A3":"\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f","B3":"\u0444\u0443\u043d\u043a\u0446","B4":"\u0444\u0443\u043d\u043a\u0446","B5":"\u0444\u0443\u043d\u043a\u0446"}

{% hint style="warning" %}
Если вы не хотите рисковать и желаете ограничить доступ к своей таблице лишь своей учетной записью, то надо передавать параметр creds\_path с url вашего файла с данными.&#x20;
{% endhint %}

**Подробнее о работе через свой аккаунт написано** [**здесь**](https://docs.salebot.pro/integracii/google/broken-reference)**:**&#x20;

**{"id": "ид таблицы", "read":{"a1":"a3", "b3": "b6"}, "list\_name": "Название листа","creds\_path": "путь к вашему файлу с данными для авторизации"}**

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FEF0i96APHjuWYdOjgGo8%2Fimage.png?alt=media&#x26;token=f6a17077-b722-44cc-8fab-f937e9414ca0" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FSJoQxPQ03pgVFA511Rsk%2Fimage.png?alt=media&#x26;token=cf2f4e2d-a2b6-47b2-a302-e733506e8b93" alt=""><figcaption><p>Пример чтения из таблиц</p></figcaption></figure>

### Как **удалить данные**

#### 1. Удаление записи из конкретных ячеек

<mark style="color:red;">**!**</mark> URL функции: <https://store.salebot.pro/function/gsheets>

<mark style="color:red;">**!**</mark> JSON-Параметры запроса:&#x20;

**`{"id": "ид таблицы", "remove":["a1", "b3", "c2"]}`**.&#x20;

Удалит значения из конкретных ячеек, которые вы укажете (в нашем примере a1, b3, c2)

{% hint style="warning" %}
Нумерация колонок начинается с единицы.
{% endhint %}

Если вы хотите удалить ячейки не на первом листе, то надо добавить в запрос параметр list\_name:&#x20;

**`{"id": "ид таблицы", "remove":["a1", "b3", "c2"], "list_name": "Название листа"}`**&#x20;

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

{% hint style="danger" %}
Если вы не хотите рисковать и желаете ограничить доступ к своей таблице лишь своей учетной записью, то надо передавать параметр creds\_path с url вашего файла с данными.&#x20;
{% endhint %}

Подробнее об этом [Работа через свой аккаунт](https://docs.salebot.pro/integracii/google/broken-reference):&#x20;

**`{"id": "ид таблицы", "remove":["a1", "b3", "c2"], "list_name": "Название листа","creds_path": "путь к вашему файлу с данными для авторизации"}`**

#### **2. Как удалить строку полностью (со смещением)**

<mark style="color:red;">**!**</mark>**&#x20;URL функции:** <https://store.salebot.pro/function/cellerase>

<mark style="color:red;">**!**</mark> JSON-Параметры запроса:&#x20;

**`{"id": "ид таблицы", "delrows": "номер строки", "list": "номер листа"}`**\
\
Для использования данного функционала передавайте в функцию следующие параметры:\
**id** - id гугл таблицы \
**delrows** - номер строки (начиная с 1) \
**list** - порядковый номер листа или **list\_name** - имя листа

Пример:\
`{"id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "delrows": "1", "list": "2" }`\
или\
`{"id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "delrows": "1", "list_name": "Лист2" }`

#### **3. Как удалить колонку полностью (со смещением)**

<mark style="color:red;">**!**</mark>**&#x20;URL функции:** <https://store.salebot.pro/function/cellerase>

<mark style="color:red;">**!**</mark> **JSON-Параметры запроса:**&#x20;

**`{"id": "ид таблицы", "delcols": "номер колонки", "list": "номер листа"}`**

Аналогично удалению строки, только нужно передать параметр delcols

**id** - id гугл таблицы \
**delcols** - номер столбца (начиная с 1)\
**list** - порядковый номер листа либо **list\_name** - имя листа

Пример:\
`{"id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "delcols": "1", "list": "2" }`\
или\
`{"id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "delcols": "1", "list_name": "Лист2" }`

### Как **искать данные**

#### **1. Как искать текст в таблице (вывод первой подходящей строки)**

<mark style="color:red;">**!**</mark> URL функции:  <https://store.salebot.pro/function/findcell>

<mark style="color:red;">**!**</mark> JSON-Параметры запроса:&#x20;

**{"id": "ид таблицы", "find": "текст для поиска", "col": номер колонки, "return": номер колонки,"creds\_path": "путь к вашему файлу с данными для авторизации"}**

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

{% hint style="warning" %}
Нумерация строк и колонок идет с единицы.
{% endhint %}

Существует четыре способа:\
1\) <mark style="background-color:blue;">**Поиск по всей таблице и вывод текста из соседней ячейки**</mark>\
\&#xNAN;**{"id": "ид таблицы", "find": "текст для поиска"}**\
Ответ: {"status":"1","data":"\u0440\u0430\u0441\u0441\u0432\u0435\u0442","cell\_number":{"row":4,"col":1, "col\_letter":"A"}}\ <mark style="background-color:orange;">Разбор ответа:</mark> data -> Ответ; cell\_number|row -> Строка; cell\_number|col -> Столбец

2\) <mark style="background-color:blue;">**Поиск по колонке и вывод текста из соседней ячейки.**</mark> Где col номер колонки для поиска.\
\&#xNAN;**{"id": "ид таблицы", "find": "текст для поиска", "col": 2}**\
Ответ: {"status":"1","data":"\u043a\u0440\u044b\u0448\u0430","cell\_number":{"row":4,"col":2, "col\_letter":"B"}}\ <mark style="background-color:orange;">Разбор ответа:</mark> data -> Ответ; cell\_number|row -> Строка; cell\_number|col -> Столбец

3\) <mark style="background-color:blue;">**Поиск по колонке и вывод текста из указанной колонки в той же строке.**</mark> Где return номер колонки для вывода.\
\&#xNAN;**{"id": "ид таблицы", "find": "текст для поиска", "col": 2, "return": 4}**\
Ответ: {"status":"1","data":"\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f","cell\_number":{"row":6,"col":2, "col\_letter":"B"}}\ <mark style="background-color:orange;">Разбор ответа:</mark> data -> Ответ; cell\_number|row -> Строка; cell\_number|col -> Столбец

4\) <mark style="background-color:blue;">**Поиск по колонке и вывод текста из всей строки.**</mark> Параметр return необходимо передать со значением 0.\
\&#xNAN;**{"id": "ид таблицы", "find": "текст для поиска", "col": 2, "return": 0}**\
Ответ: {"status":"1","data":{"0":"\u0441\u043e\u043b\u043d\u0446\u0435","1":"\u0440\u0430\u0441\u0441\u0432\u0435\u0442","2":"\u043a\u0440\u044b\u0448\u0430","3":"","4":"\u043d\u0435\u0431\u043e"},"cell\_number":{"row":4,"col":1, "col\_letter":"A"}}\ <mark style="background-color:orange;">Разбор ответа:</mark> data -> Ответ; data|0 -> Ячейка1; data|1 -> Ячейка2; data|2 -> Ячейка3; data|3 -> Ячейка4; cell\_number|row -> Строка; cell\_number|col -> Столбец

Если вы хотите прочитать значения не на первом листе, то надо добавить в запрос параметр list\_name:\
\&#xNAN;**{"id": "ид таблицы", "find": "текст для поиска", "col": 2, "return": 4, "list\_name": "Название листа"}**

Если вы не хотите рисковать и желаете ограничить доступ к своей таблице лишь своей учетной записью, то надо передавать параметр creds\_path с url вашего файла с данными. Подробнее об этом ниже в пункте Работа через свой аккаунт:&#x20;

**{"id": "ид таблицы", "find": "текст для поиска", "col": 2, "return": 4,"creds\_path": "путь к вашему файлу с данными для авторизации"}**

Параметр ответа "status":"1" означает, что найдено значение, а "status":"0" - не найдено. data - найденное значение, cell\_number - найденная ячейка.

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FgK2L7mdV1tjB2iA8IW07%2Fimage.png?alt=media&#x26;token=a3fa6d35-f80a-4bf5-a7bc-4e81e4f61cc2" alt=""><figcaption></figcaption></figure>

По умолчанию поиск идет на полное совпадение, но вы можете использовать и другие алгоритмы поиска. Об этом читайте ниже в пункте [Другие алгоритмы поиска](#4.-drugie-algoritmy-poiska).

#### 2. Как осуществлять поиск по всем листам и выводить результат поиска в виде списка

Если возникла необходимость искать значения по всем листам в таблице, то нужно использовать следующую функцию **sheet\_search\_in\_all\_sheets(workbook\_id, search\_value)**

**workbook\_id** - это идентификатор вашей гугл таблицы

**search\_value** - это значение, которое надо найти

В данной функции поиск идет по полному совпадению значений.

Пример:

result = sheet\_search\_in\_all\_sheets('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ', '256')

Результат:

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FdkzocYmR2jm0xWykTYQN%2Fimage.png?alt=media&#x26;token=a91beb1e-8f82-4b2c-a190-027c259936ff" alt=""><figcaption></figcaption></figure>

Если проблем при выполнении запроса не возникло, то в ответ приходит результат поиска - список словарей, где каждый словарь имеет следующие ключи:

**sheet\_name** — название листа, где было найдено искомое значение&#x20;

**cell\_id** — идентификатор ячейки, где было найдено искомое значение&#x20;

**search\_value** — само значение которое надо было найти

#### 3. Как вывести список всех совпадений из таблицы

Для нахождения всех заданных значений в колонке используйте функцию findcell с параметром 'find\_all', при этом она найдет все значения параметра 'find\_all' в колонке 'col' и выведет строкой список уникальных значений из колонки 'return'.

<mark style="color:red;">**!**</mark>**&#x20;URL функции:**  <https://store.salebot.pro/function/findcell>

<mark style="color:red;">**!**</mark>**&#x20;JSON-Параметры запроса:**&#x20;

**`{"id": "id таблицы", "find_all": "что ищем", "list_name": "название листа", "col": "номер колонки в которой ищем", "return": "номер колонки из которой возвращаем" , "find": "!"}`**

Пример ответа:\
`{"status":1,"spisok":"\u0412\u0430\u0441\u0438\u043b\u0438\u0439\n+79873238217\n \u0448\u043f\u044b\u0446\n8906796808", "quantity": 5}`\ <mark style="background-color:orange;">**Разбор ответа:**</mark> spisok -> Список; quantity -> количество

#### 4. Поиск по нескольким колонкам

Если возникла необходимость искать по нескольким колонкам сразу, то нужно использовать следующий запрос.\ <mark style="color:red;">!</mark> **URL функции:**[ https://store.salebot.pro/function/findcell](https://store.salebot.pro/function/findcell)&#x20;

<mark style="color:red;">**!**</mark>**&#x20;JSON-Параметры запроса:**

**`{"id": "id таблицы", "find_all": "ok", "list_name": "название листа", "columns": {"2":"что ищем", "4": "еще что ищем", "3": "то что ищем"}, "return": "номер колонки из которой возвращаем", "with_index": "1"}`**

Обратите внимание на параметр: `"columns": {"2":"что ищем", "4": "еще что ищем", "8": "то что ищем"}`

цифры (2, 4, 8), это пример номеров колонок в каких нужно искать, а после двоеточия тот текст, который ищем

вспомогательный параметр "find\_all": "ok" также надо передавать

**with\_index** - если указан с значением 1, то функция вернет список с указанием номера строки, в которых найдены ячейки, например: \
белый - 3 \
красный - 7 \
желтый - 8 \
где 3,7,8 это номера строк, если этот параметр не передавать, то вернется:

**with\_index** - если указан с значением 2, то функция вернет список с указанием номера строки, в которых найдены ячейки, например: \
3 - белый \
7 - красный \
8 - желтый \
где 3,7,8 это номера строк

**with\_index** - если указан с значением 3, то функция вернет словарь значений с ключом от 0 и далее, в которых найдены ячейки, например: \
{"0":"белый", "1":"красный", "2":"желтый"} который можно разобрать используя функцию get()

Такой запрос вернет список значений, если в строке совпадут все значения по столбцам в параметре columns.

**Пример ответа:** \
\&#xNAN;*{'status': 1, 'spisok': белый\nкрасный\nжелтый\n', 'quantity': 3, 'rows\_index': \[4, 9, 13]}*

&#x20;<mark style="background-color:orange;">**Разбор ответа:**</mark> \
\&#xNAN;*spisok -> список;* \
*quantity -> количество*\
*rows\_index -> stroki*

Если в return указать 0, тогда вернется первая найденная строка со всеми значениями, которые можно сохранить: `{"status":"1","data":{"0":"значение 1 ячейки","1":"значение 1 ячейки","2":"значение 2 ячейки","3":"значение 3 ячейки","4":"значение 4 ячейки"},"row":5}`

data - словарь со значениями ячеек в строке&#x20;

row - номер найденной строки&#x20;

**Пример:**

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FM7IZS4UkdcTH0x9itsuH%2Fimage.png?alt=media&#x26;token=733dfff3-a5c2-45aa-84b2-938c9849b57b" alt=""><figcaption></figcaption></figure>

#### 4. Другие алгоритмы поиска

Для использования новых алгоритмов поиска нужно, к стандартному вызову, добавить дополнительные параметры.

Добавлено <mark style="background-color:orange;">**4 новых алгоритма поиска (‘alg’)**</mark> по:

Левенштейну - ‘L’\
используя регулярное выражение - ‘R’\
частичному Левенштейну - ‘PL’\
по наличию ключевых слов - ‘K’

Пример запроса: **{"id": "ид таблицы", "find": "текст для поиска", "alg":"**<mark style="background-color:blue;">**L**</mark>**"}**

**Особенности использования и назначение:**

* Алгоритмы поиска по Левенштейну и по частичному Левенштейну используются при поиске с допустимыми орфографическими ошибками. Процент допустимых ошибок указывается в параметре “value”. Минимальный порог похожести 90%, при этом не учитывается регистр.\
  Пример JSON-параметров: \
  {"id": "ид  таблицы", "find": "текст для  поиска", **"alg": "L", "value": "90"**}
* Поиск по регулярному выражению - это поиск по соответствию заданной маске. Маска поиска указываеся в обязательном параметре:  “value”: “тут ваше регулярное выражение” &#x20;

{% hint style="warning" %}
Регулярное выражение необходимо экранировать. Перед каждым символом \ необходимо указать такой же \\, то есть исходное выражение "^\d\d$" должно выглядеть как "^\\\d\\\d$"&#x20;
{% endhint %}

* Поиск по наличию ключевых слов вам уже знаком из практики применения блоков с условиями - это поиск на вхождение указанного слова в строку

**Примеры**

Поиск по Левенштейну, порог вхождения 90 и выше.\
1\) Поиск по всей таблице и вывод текста из соседней ячейки\
{"id": "#{sheet\_id}", "find": "что-то, что я ищу", **"alg": "L", "value": "90"**}

Поиск с использованием регулярного выражения\
2\) Поиск по колонке и вывод текста из указанной колонки в той же строке. Где return номер колонки для вывода.\
`{"id": "ид таблицы", "col": 2, "return": 4,`**`"alg": "R", "value": "^\\d\\d$"`**`}`\
Параметр "find": "текст для поиска" в этом режиме поиска не нужен.

## **Как сделать кнопки для выбора листа в таблице**

Если вы хотите предложить пользователю возможность выбрать определенный лист в таблице (например, для записи на прием в определенный день), то воспользуйтесь вспомогательной функцией sheetchoice.

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

URL функции: <https://store.salebot.pro/function/sheetchoice>

функция принимает следующие параметры

`{"id": "id таблицы", "client_type": "#{client_type}", "show": "количество результатов для вывода"}`

где id - это id таблицы с которой вы работаете , client\_type - тип мессенджера и show - количество результатов для вывода

Пример ответа функции в случае мессенджеров с кнопками:

`{"vibor": "[{\"type\": \"reply\", \"text\": \"22.11.2019\", \"line\": 0, \"index_in_line\": 0}, {\"type\": \"reply\", \"text\": \"20.11.2019\", \"line\": 1, \"index_in_line\": 0}]"}`

Пример ответа функции в случае мессенджеров без кнопок:

`{"vibor": "0 - 22.11.2019\n1 - 20.11.2019\n"}`

Сохраните ответ функции в нужную вам переменную, например, так vibor->vibor. Для ботов, поддерживающих кнопки, вставляйте ее в поле "Расширенные настройки кнопок"

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2Fm30jKDcwsXs9SKbD4EC6%2Fimage.png?alt=media\&token=00d892e0-fe36-4b7c-b304-d02283abe01e)

Для мессенджеров без кнопок выводите ее в блоке с ответом&#x20;

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FGzWrZ5vi7AsXr4v14Xfg%2Fimage.png?alt=media\&token=8d43d49c-daf7-4e5c-b6a5-fcc224af9c57)

## Как работать с буквами колонок

Если вам надо перевести букву колонки в цифру, можете воспользоваться функцией калькулятора **c2n**, если нужно перевести цифру в букву, то используйте **n2c**. Также вы можете прибавлять к буквам колонок смещение через функцию addCols, которая принимает первым параметром строку с буквой колонки, а второй - смещение. Передайте отрицательное смещение, чтобы идти влево.

Пример:

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FIWttwckEOWobX9HgnCFN%2Fimage.png?alt=media\&token=8e2b8c36-aec4-4c18-986c-f9eac690d151)

Результат работы:

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FAz9JIi5oeZ6ISjfzm9xX%2Fimage.png?alt=media\&token=0d33be4d-a30c-490d-9b76-8333d1c30235)

## Как задать переменные в именах колонок

Вы можете переменной указать адрес ячейки для считывания и по этой же переменной достать из ответа в переменную.

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2Fr26XtTZGCdo7NOdLYZiC%2Fimage.png?alt=media\&token=dc28281d-2e43-4db2-8425-56e3e1dc1247)

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F9prr5idFVzNbeiWOaYUH%2Fimage.png?alt=media\&token=2b091361-29dd-448f-94a2-8fd1f01994d8)

## Как добавить лист в таблицу

URL функции: *<https://store.salebot.pro/function/gsheets>*

Пример запроса:*`{"id": "ид таблицы", "new_list_name": "New list", "rows": "1000", "cols": "26"}`*\
\&#xNAN;*id* - айди таблицы\
\&#xNAN;*new\_list\_name* - имя нового листа\
\&#xNAN;*rows* - количество строк в листе\
\&#xNAN;*cols* - количество столбцов в листе\
При удачном создании листа, вернет *status - ok* и ид созданного листа list\_id\
пример: `{"status": "ok", "list_id": 384046608}`\
Внимание ограничение на размер всей таблицы (не листа) 5000000 ячеек. Это сумма всех ячеек во всех листах одной таблицы.

#### Возможные ошибки, выводимые в custom\_answer

*{'code': 400, 'message': 'Invalid requests\[0].addSheet: This action would increase the number of cells in the workbook above the limit of 5000000 cells.', 'status': 'INVALID\_ARGUMENT'}*\
При попытке создания листа превышается лимит в 5000000 ячеек на одну таблицу.\
\
\&#xNAN;*{'code': 400, 'message': 'Invalid requests\[0].addSheet: A sheet with the name "ZZZZZZZZZZZ" already exists. Please enter another name.', 'status': 'INVALID\_ARGUMENT'}*\
Лист с таким названием уже существует<br>

## Возможные ошибки

Если таблица в версии .XLSX, то интеграция работать не будет. Таблицу нужно конвертировать в формат Google-таблиц.

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FwlXFGZgdgftwapOJZ2aQ%2Fimage.png?alt=media\&token=47f6dfd4-1824-42a2-a79a-531041a65490)

#### Видеоверсия:

{% embed url="<https://youtu.be/TKgiVsf3LXI>" %}

## **Видео-примеры**

{% embed url="<https://youtu.be/EMbJcEU398U>" %}
Построчная запись в таблицы
{% endembed %}

{% embed url="<https://youtu.be/ojwHxN42i_k>" %}
Запись и чтение из таблицы
{% endembed %}

{% embed url="<https://youtu.be/rQ2vp2PIW9c>" %}
Поиск информации по таблице
{% endembed %}

## Функции (API) для работы с Google-таблицей

<details>

<summary>API Google-таблиц</summary>

Подробно о подключении и использовании google-таблиц [ТУТ](https://docs.salebot.pro/integracii/google/broken-reference)

Каждая функция принимает первым параметром sheet\_id идентификатор таблицы. Вы можете получить его из ссылки на вашу гугл таблицу (то что выделено жирным в ссылке ниже). [https://docs.google.com/spreadsheets/d/**1aUbbUaw2SRnJFAavv06Noa1EzumhyShKDm7ie6lYlc4**/edit#gid=0](https://docs.google.com/spreadsheets/d/1aUbbUaw2SRnJFAavv06Noa1EzumhyShKDm7ie6lYlc4/edit#gid=0)

{% hint style="info" %}
Для удобства идентификатор таблицы лучше записать в переменную и передавать ее в функции
{% endhint %}

Все функции, описанные ниже возвращают словарь с результатом работы. Он обязательно включает **status**, который в зависимости от результата либо **true** при успехе, либо false, при ошибке.

Если статус **true**, то могут присутствовать и другие параметры, которые можно получить воспользовавшись функцией **get()**

Если статус **false**, то присутствует параметр **err**, в котором описание ошибки.

Если вы планируете работу не с первым листом таблицы, то можно передать дополнительный параметр **worksheet\_name\_or\_id\_or\_index**. Каждая из функций принимает этот параметр, который соответствует либо названию листа, либо его идентификатору.

**Словарь** - некоторые функции принимают параметром словарь с набором определенных данных. Есть ряд правил, которые нужно соблюдать.

* весь словарь заключается в одинарные кавычки '{}'
* ключи и значения (текст или переменная) в словаре заключаются в двойные кавычки '{"key": "value", "key2": "#{email}"}'

### **Как работать** через свой аккаунт

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

{% hint style="info" %}
Чтобы обеспечить достаточный уровень безопасности, вы можете использовать личные ключи с аутентификационными данными.
{% endhint %}

{% hint style="warning" %}
У гугл таблиц есть лимиты на количество запросов в единицу времени. Чтобы не зависеть от лимитов, вы можете использовать свой аккаунт.
{% endhint %}

Для этого в настройках проект в “Константы проекта”, нужно добавить переменную sheet\_json\_keys с массивом ваших ключей.

Он может содержать как ключи json из файла, так и url адреса на файл ключа.

Ключ json из файла - получаем файл с ключом (как его получить - читайте ниже), открываем любым текстовым редактором и копируем содержимое и добавляем в массив.

Url адреса на файл ключа - самый простой путь получения такого url - загрузить файл с данными в конструктор. Для этого нужно создать блок не состояние, во вложения - загрузить файл с сервисными данными (как его получить - читайте ниже). После этого нужно кликнуть правой кнопкой по названию файла и выбрать пункт Копировать адрес ссылки.&#x20;

![](https://lh4.googleusercontent.com/3FUfrGQyJ90Yy6Cbh4suSADvdW_mij-N8EiV0yPyc1hFy35VGarw0Qq3l2SBp-Dj-L7LRvUP6x9S_iwnXec7j4B3K-DIXd3OTVI6clp3eExiuFFMGjiusyNRk-0nzDEvwyjVP1jp)

Четыре примера переменной sheet\_json\_keys:

1. \["url адрес на файл ключа", "url адрес на файл ключа 2"]

![](https://lh3.googleusercontent.com/EhB3DLdDsXSUlewz7bZO68iFVpEVBh8kaTV78KsgduJXRXc_Tj3r0w1x67tzdfV1yhWp2NrOFEV5mmZW8znup9z9CTRoctEQVbvzcL8hIXvMcuSPhFsoiAZl3XeHVgZGIXHLivQ9)

2\. \["url адрес на файл ключа", "url адрес на файл ключа 2", {json ключ из файла}, {json ключ из файла}]

![](https://lh6.googleusercontent.com/91YvlbbC__7FOB76L7zY2O3CckITG9S_JUs1S_VXrHK9E3dQNhEd8RzGxRE-tnKLFdkqF0JuLDYUCVqiDNaZNssK1QJml-x1tYJFjaSyqJ0RMJaQs2TZsJYePcQmlJqYEFuw15fD)

3\. \[{json ключ из файла}]

(ключ на скриншоте укорочен, реальный ключ на порядок больше)

![](https://lh4.googleusercontent.com/ftKfjaVGdoG0bMynYvwfETXljX-s1rcrUVo5BXF--Fceq6TanrjWKknp0Wljr-sKGYmhHVnX5-0NccpI5TjL_s-dFWEh2m9HbpHgW7IVTqESK-MjbBHq-ZNWltxaXjrTwlRW0tc4)

4\. \["url адрес на файл ключа"]

![](https://lh3.googleusercontent.com/JSesZviZ9jrFl8TecM4tkOUqwiGDqQ9NLKCO13KdtcFyc6Y5jJ1UesBDJUrOLF8wpMNO6wmQdc1HuwgpEe-8QEX3Vk3BS2Pqhbv4rp4APzwLBjNVIG8AWwB01mLlgQ2xfjieMl8p)

{% hint style="warning" %}
Ключи прописываем в Константах проекта.\
\
В функциях (API) в калькуляторе передавать дополнительный параметр не нужно, ключи подтянутся автоматически.&#x20;
{% endhint %}

{% hint style="warning" %}
Если в переменной sheet\_json\_keys указано <mark style="color:green;">**несколько сервисных**</mark> аккаунтов, то <mark style="color:green;">**настройки доступа к таблице**</mark> на стороне Google делаем <mark style="color:green;">**на**</mark> <mark style="color:green;">**ВСЕ УКАЗАННЫЕ**</mark> в переменной sheet\_json\_keys <mark style="color:green;">**СЕРВИСНЫЕ АККАУНТЫ**</mark>.&#x20;
{% endhint %}

{% hint style="danger" %}
Если вы настраиваете интеграцию в разделе Запросы редактора блока, то необходимо передать дополнительный параметр creds\_path с url вашего файла с данными. Как это сделать описано [здесь](https://docs.salebot.pro/integracii/google/rabota-s-google-tablicami#kak-rabotat-cherez-svoi-akkaunt)
{% endhint %}

Подробнее о том, как работать через свой аккаунт с Google - таблицами и получении ключа читайте в этой статье:&#x20;

### **Как создать новую таблицу из Salebot**

Salebot поддерживает создание новых таблиц. Для этого у Вас должна быть переменная sheet\_json\_keys (как ее создать можно посмотреть [тут](https://docs.salebot.pro/integracii/google#podgotovka-servisnogo-akkaunta))

Функция для создания таблиц:

**sheet\_create\_spreadsheet**(new\_worksheet\_title, google\_email), где \
new\_worksheet\_title - имя вашей новой Google-таблицы. \
google\_email - почта вашего Google-аккаунта.

{% hint style="danger" %}
Переменная **google\_email** необходима для передачи указанной почте прав редактора созданной таблицы, т.к google автоматически присваивает права владельца вашему зарегистрированному ранее Google-проекту. К сожалению, на данный момент это единственная возможность создавать Google-таблицы через Api.
{% endhint %}

Пример: \
new = sheet\_create\_spreadsheet('ЧЕМОДАНчик', '<amadeoartista1992@gmail.com>')

![](https://lh3.googleusercontent.com/b0fitI4NPhN98k6YlYBnvZIuhG_lXRL4ZVPCWty2Pipe7LDf8J1RExdzXUU1_lSHxtueLNTceBG0qonUKCqxDq4gq4s8pnoeKlodEj2trEgCryCWD0xJ37dKshWDbOPzMX9NEqYBb-TBVDnLKU8)

После обновления страницы Google-таблиц в Вашем аккаунте Вы найдете новую таблицу:

![](https://lh3.googleusercontent.com/v91ss3J9uRTPJaPrv28tXP8Nf2u3e3FaChh086wQWdVemkbeweedaFlbSBnV_2GtIKQJ0lMmQ8Ta3vmESX3O6HUPsv_7BAUFIFM48WAALUtSd_P08Mrkijg0TnGfuW6Xn0bS9c5AvIgl-rR-m2E)

В списке переменных клиента появится переменная  google\_spreadsheet\_id, в которой будет записан идентификатор новой таблицы.

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и уведомление: \
{'status': True, 'message': Google worksheet ‘ЧЕМОДАНчик’ is created'}

status - результат копирования \
result - сообщение об операции \
Если возникла ошибка, то вернется статус false и описание ошибки.

### Как добавить новый лист в **Google-**&#x442;аблицу <a href="#docs-internal-guid-f5d2c48c-7fff-2b4d-af8d-f769cccc0be3" id="docs-internal-guid-f5d2c48c-7fff-2b4d-af8d-f769cccc0be3"></a>

Осуществляется с помощью функции:&#x20;

**sheet\_create\_worksheet**(sheet\_id, list\_name, cols=None, rows=None)

Функция возвращает словарь с идентификатором нового листа и статусом True ({"status":true,"list\_id":1063146761}) или описание ошибки, если статус False ({"status":false,"err":"Ошибка или описание"})

Пример:

`result = sheet_create_worksheet('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzTl', "New list")`

`status = get(result, 'status')`

![Добавление нового листа в Google-таблицу](https://lh5.googleusercontent.com/ZRtVDekgJ-_7gFflbdN0_nnB4NYUlZctZPWB-TJu-GzML2lt7rGJ1S0LfqWw8U9T0ww1n4l55kj-NcwdABxoMd3ZeAt8TuG0yinoLl0QZhjcxuZQzJPNxKa9DdD6SFN-khjBzoYF)

### Как удалить лист в Google-таблице

Чтобы удалить лист в таблице, воспользуйтесь функцией **sheet\_delete\_worksheet(sheet\_id, worksheet\_name\_or\_index)**, где:\
**sheet\_id** - это идентификатор вашей Google-таблицы,\
**worksheet\_name\_or\_id\_or\_index** - название листа или идентификатор листа, который нужно удалить

Пример:

deleted\_sfh = sheet\_delete\_worksheet('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ', 'Лист14')

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F4kC4oWQW4tYeLSOj0ygW%2Fimage.png?alt=media&#x26;token=9a9b0815-5506-46da-ba0f-7539bd90439f" alt=""><figcaption><p>Удаление листа из Google-таблицы</p></figcaption></figure>

Функция вернет ответ по типу {"status":true,"result":"worksheet Лист14 is deleted"}. \
В случае возникновения ошибки, функция вернет ее описание.

### Как получить количество листов в Google-таблице

Чтобы получить количество листов, а также список пар “номер листа” - “название листа” , используйте функцию **sheet\_worksheet\_indexes(sheet\_id)**, где \
**sheet\_id** - это идентификатор вашей Google-таблицы

Пример:

worksheet\_indexes = sheet\_worksheet\_indexes('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ')

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F9pacxpldZMe6DBPEA4ei%2Fimage.png?alt=media&#x26;token=3b63486e-f950-469a-b98b-bb7967865569" alt=""><figcaption><p>Получение общего числа листов в Google-таблице</p></figcaption></figure>

Функция вернет ответ по типу {"status":true,"worksheets\_count":10,"worksheet\_titles":{"1":"Лист1","2":"Лист2","3":"cvtyf","4":"Лист4","5":"о да","6":"Это новый лист","7":"вль и я","8":"таракан","9":"чемодан","10":"БАЗА ДАННЫХ"}}.&#x20;

В случае ошибки функция вернет ответ с ее описанием

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

Чтобы переименовать лист, используйте функцию **sheet\_rename\_worksheet(sheet\_id, worksheet\_name\_or\_index, new\_tile)**, где:\
**sheet\_id** - это идентификатор вашей Google-таблицы,\
**worksheet\_name\_or\_id\_or\_index** - название листа или идентификатор листа, который надо переименовать,\
&#x20;**new\_tile** - новое название

**Пример:**

worksheet\_title\_change = sheet\_rename\_worksheet('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ','Лист5','о да')<br>

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F7QOlYrY6P2uEFw96Qcuv%2Fimage.png?alt=media&#x26;token=40cb3999-1a26-429e-ab93-8dce31adc214" alt=""><figcaption><p>Переименование листа в Google-таблице</p></figcaption></figure>

### **Как осуществить построчную запись** в определенные столбцы&#x20;

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

{% hint style="warning" %}
В таблице должна быть заполнена шапка (хотя бы одна ячейка в первой строке)
{% endhint %}

Осуществляется с помощью функции:&#x20;

**sheet\_mapping\_cells**(sheet\_id, cell\_data, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**cell\_data** - словарь с параметрами. '{"A": "value", "D": "#{email}"}' - где ключ это буква колонки

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер или идентификатор листа

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true,"number\_row":14}, можно сохранить номер строки number\_row и использовать для дальнейшей работы.

Пример:

`result = sheet_mapping_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', '{"a":"aaaaa", "B": "#{email}"}')`

`status = get(result, 'status')`

`number_row = get(result, 'number_row')`

![](https://lh3.googleusercontent.com/S_uOY3HqOz1-E4apnqm9gSo-af8rWp800-s05isU9gSKf05dWKXVDt25tOffNftjy8Lf7Izsgiv2JVlLijpjyVs0YVKetAUI1GQyidAv23oJHSCUp2Nl31FWHg8lM1Npe1AYLpp5)

Пример с указанием идентификатора листа:

list\_name = Рейтинг

`result` = sheet\_mapping\_cells('#{gsheet\_id}', '{"a":"#{client\_id}", "B": "#{ball}"}','#{list\_name}')

### Как осуществить запись в первую пустую строку

Вы можете собрать множество данных от пользователя и записать их в первую свободную в таблице строку.\
Работает аналогично mapping, но при достижении конца таблицы <mark style="color:green;">добавляет новые строки</mark>.

{% hint style="danger" %}
Обратите внимание, что данный метод записывает не в самый низ, а в **первую пустую** строку!\
Использовать его лучше всего для постоянного дописи одних и тех же колонок
{% endhint %}

Осуществляется с помощью функции:&#x20;

**sheet\_append\_row**(sheet\_id, cell\_data, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**cell\_data** - словарь с параметрами. '{"A": "value", "D": "#{email}"}' - где ключ это буква колонки

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер или идентификатор листа

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true,"number\_row":14}, можно сохранить номер строки number\_row и использовать для дальнейшей работы.

<mark style="color:purple;">Пример:</mark>

`result = sheet_append_row('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', '{"a":"aaaaa", "B": "#{email}"}')`

`status = result["status"]`

`number_row = result["number_row"]`

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FgUKHqudGLb3vJh33iImS%2F2023-03-01_19-28-21.png?alt=media&#x26;token=681df90a-bfb6-4792-9501-f40076fd528b" alt=""><figcaption><p>Пример записи на первый лист таблицы</p></figcaption></figure>

<mark style="color:purple;">Пример с указанием идентификатора листа:</mark>

`list_name = 'результаты викторины'`\
`gs_id = '12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT'`

`result` = `sheet_append_row(gs_id, '{"a":"#{client_id}", "B": "#{ball}"}',list_name)`

<figure><img src="https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FSkbFjQfnXhsiy6xzKVc6%2F2023-03-01_19-37-44.png?alt=media&#x26;token=f6da5f24-1c18-4251-8b77-62e841f29b6d" alt=""><figcaption><p>Пример с указанием названия листа для записи</p></figcaption></figure>

### **Как осуществить запись** данных в определенные ячейки

Осуществляется с помощью функции:&#x20;

**sheet\_write\_cells**(sheet\_id, cell\_data, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**cell\_data** - словарь с параметрами. '{"A1": "value", "D4": "#{email}"}' - где ключ это буква колонки и номер строки

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер (начиная с 1) или идентификатор листа

Пример *cell\_data*:

&#x20;'{"a1":"#{переменная}", "b3": "#{переменная}", "c1": "12545", "d20":"просто текст"}'&#x20;

Запись осуществляется в конкретные ячейки, которые вы укажете (в нашем примере a1, b3, c1, d20)

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true} или описание ошибки {"status":false,"err":"Ошибка или описание"}

Пример *sheet\_write\_cells*:

C указанием идентификатора листа 123456789:

`result = sheet_write_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzTl', '{"a1":"a3", "b3": "#{email}"}', '123456789')`

`result = sheet_write_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzTl', '{"a1":"a3", "b3": "#{email}"}')`

`status = get(result, 'status')`

![](https://lh5.googleusercontent.com/vv2WKdOoFSkSPFVLUvNnLl5la1EMyqj6XLxj_hNMBAtPAd4ylxBFtyGUbaF8_OFIJAnw1e1nGppR1Jk2NcR334txPhm4eLkrVbDqPhKzQm5Ordd2zfR5ooXM2-Gr_bpSWxMzvmeV)

### **Как удалить запись** из конкретных ячеек

Осуществляется с помощью функции:&#x20;

**sheet\_remove\_cells**(sheet\_id, cell\_list, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**cell\_list** - массив ячеек. Пример: '\["A1", "D4"]' - где буква колонки и номер строки

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер (начиная с 1) или идентификатор листа

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true} или описание ошибки {"status":false,"err":"Ошибка или описание"}

Пример:

C указанием идентификатора листа 123456789:

`result = sheet_remove_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', '["a1", "b3", "c2"]', '123456789')`

`result = sheet_remove_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', '["a1", "b3", "c2"]')`

`status = get(result, 'status')`

Удалит значения из конкретных ячеек, которые вы укажете (в нашем примере a1, b3, c2)

Нумерация колонок начинается с единицы.

![](https://lh3.googleusercontent.com/BWvKR4mxqOUlSTSbKbdOnJW8Z1JfHYa2HFuWmkOAhRE63tUj-bzcXjl5sMnIBCSXXbqm1ehYWZPFi_NBBKMzYM-f6lrpgovhaz88v8HZI1T-PRy5jQIZ2X0Iaes7vyUF5Nyi5qPW)

### **Как осуществить запись** в первую пустую ячейку строки

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

**sheet\_append\_cell\_in\_row(sheet\_id, row, value, worksheet\_name\_or\_index=None)**

**sheet\_id** - это идентификатор вашей гугл таблицы.

**row** - номер строки, в которую производится запись&#x20;

**value** - значение, которое запишется в ячейку

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер (начиная с 1) или идентификатор листа

Если проблем при выполнении запроса не возникло, то в ответ приходит {"status":true, "number\_col":10,"col\_name":"J3"}. Вы можете сохранить эти номера и использовать для дальнейшей работы.

В случае ошибки придет словарь со статусом false и описанием ошибки {"status":false,"err":"Error value"}

Пример:

Запись в пустую ячейку первой строки.

`result = sheet_append_cell_in_row('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', 1, "Значение")`

![](https://lh6.googleusercontent.com/sQz4elEV15tAOLr499JIIFWpVHXn9jzmOBDqyvumkhio7Kej1Q5_zBBfJNZaYb8BhbmXCO1cp-TrO-K4JyQZG0y-CFq0NQkE9HtB8FTN3xgbLmGlL-9eQAEaypuKYordhOC-dwqn)

![](https://lh6.googleusercontent.com/ux_b_vw4he_vJAwyw7gFujrpSuGJK4U0V7lQDD4FxW0DxFWFDPZ2wDSw_HTB2-3g_RuZBMCumURvQP9sdTevepOQ5jVYtshAyj8lwx0HFsTeT2KY9at5qsedUq_RcLrne3xPResr)

### **Как читать данные** из таблицы

Осуществляется с помощью функции:&#x20;

**sheet\_read\_cells**(sheet\_id, cell\_data, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**cell\_data** - словарь с диапазонами.

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер (начиная с 1) или идентификатор листа

Пример cell\_data: '{"a1":"a1", "a3": "b4", "c1": "c3"}'

В примере "a1":"a1" возвращает значение одной ячейки, а "c1":"c3" - 3 значения из колонки C.

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и все ячейки со значениями {"status":true,"A1":"значение","A3":"значение","B3":"значение","A4":"значение", "B4":"значение", "C1":"","C2":"значение","C3":"ddddddd"} или описание ошибки {"status":false,"err":"Ошибка или описание"}

Пример:

C указанием идентификатора листа 123456789:

`result = sheet_read_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzTl', '{"a1":"a1", "a3": "b4", "c1": "c3"}', '123456789')`

`result = sheet_read_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzTl', '{"a1":"a1", "a3": "b4", "c1": "c3"}')`

`status = get(result, 'status')`

![](https://lh5.googleusercontent.com/cozSQkX5TfbCatfDXWs2XTwLEvio7iQePJqqJHuKi8sQxMM76s9QvafTEgWhNa9nGlfXpsD5qO59Mi-Mg91n43JqfU_TnglQ-LZFuXhrJ6VFob_tr8az6o8fT9rGuAvEd-aotf4z)

### **Как удалить** диапазон ячеек

Осуществляется с помощью функции:&#x20;

**sheet\_remove\_range**(sheet\_id, del\_range, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**del\_range** -  в виде "A1:B2" - диапазон ячеек которые нужно стереть

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер (начиная с 1) или идентификатор листа

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true} или описание ошибки {"status":false,"err":"Ошибка или описание"}

\
Пример:&#x20;

удалить ячейки A1, B1, A2, B2 с первого листа

`result = sheet_remove_range('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', 'A1:B2')`

![](https://lh5.googleusercontent.com/HOOGmdDWUH1lXUxXrfBZYZDUPDTsJSTgl_VdeGMLxplUIZN7GW7CiQtQH9cv1nZQOQ_xR59DilfqiABSQS-HiuIYu6MkbIxPXn_UM0BcA510oMQHAHw5-mHdzeNtjc8tSScHApSF)

### **Как полностью удалить** строку, со смещением

Осуществляется с помощью функции:&#x20;

**sheet\_remove\_row**(sheet\_id, row\_number, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**row\_number** -  номер строки, который нужно стереть (нумерация с 1)

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер (начиная с 1) или идентификатор листа

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true} или описание ошибки {"status":false,"err":"Ошибка или описание"}

Пример:&#x20;

удалить строку номер 14 с первого листа

res`ult = sheet_remove_row('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', '14')`

![](https://lh6.googleusercontent.com/H6lpU-ASLqXImnXrKgzwKBCVabYAw-Ce-_2SEHFnCNPNJ8F8hq8Z8u2zAzeM1Ii4qaFn1OSxnNEYPLjkZPegosIndPI0yukQZU6ysyVNxPXTIxVcOjZXZEU9IUw2mDJXhsj5Ohr6)

### **Как полностью удалить колонку**, со смещением

Осуществляется с помощью функции:&#x20;

**sheet\_remove\_col**(sheet\_id, col\_number, worksheet\_name\_or\_id\_or\_index=None)

**sheet\_id** - это идентификатор вашей гугл таблицы.

**col\_number**-  номер столбца, который нужно стереть (нумерация с 1)

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа, порядковый номер (начиная с 1) или идентификатор листа

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true} или описание ошибки {"status":false,"err":"Ошибка или описание"}

Пример:&#x20;

удалить 6-ой столбец с первого листа

result = sheet\_remove\_col('12sSVR3Wk-1kNb9CsjyJ2gjLb\_PiRl5DhbF4YcD1VzT', '6')

![](https://lh4.googleusercontent.com/J3s22VdnAUGMA6M-durF7sCe5BAluLzyGTUgAUPj834hV7YR1pof2zqEBPvSKOuXQo3mzv55Je8JeNlA-biQGa9Y27U5fnc2Uzv4FUQ8KDyjMGyEbKLJb15b4oJbj9rhgaZ-0iIi)

### Как осуществлять поиск текста в таблице

Для каждого из вариантов поиска доступно четыре режима поиска algorithm:&#x20;

1. полное совпадение - F
2. по ключевым словам - K (латиница)
3. расстояние Левенштейна - 80 (значение от 1 до 100 уровень “похожести”)
4. используя регулярное выражение - R

Чтобы выбрать какой-то из режимов нужно передать значение в соответствующее поле метода (подробный пример в функции sheet\_search\_in\_col\_return\_cell).

### Как осуществлять поиск по колонке и выводить текст из указанной колонки в той же строке

{% hint style="info" %}
Поиск по колонке вернет первое найденное значение.
{% endhint %}

Поиск по колонке осуществляется с помощью функции:&#x20;

**sheet\_search\_in\_col\_return\_cell(sheet\_id, query, col\_number, return\_col, algorithm, worksheet\_name\_or\_index=None)**

**sheet\_id** - это идентификатор вашей гугл таблицы.

**query** - поисковый запрос, то что нужно найти

**col\_number** - номер колонки, в которой искать (нумерация с 1)

**return\_col** - номер колонки из которой вернуть значение

**algorithm** - алгоритм поиска (F - полное совпадение, K - наличие ключевых слов, R - регулярное выражение, 1-100 - процент похожести (подробнее выше))

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа или идентификатор листа

Пример использования

Рассмотрим все алгоритмы поиска на примере этой функции.

Условие: ищем в листе с названием Лист1, в колонке 2 ячейку с фразой "поисковый запрос", если такая будет найдена, то вернется значение в этой строке из колонки 5\
**1. Полное совпадение - F**

`sheet_search_in_col_return_cell("#{sheet_id}", "поисковый запрос", 2, 5, "F", "Лист1")`

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

`sheet_search_in_col_return_cell("#{sheet_id}", "поисковый запрос", 2, 5)`

![Таблица для поиска](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FRzjoFNHacNFnNZqCoyKb%2Fimage.png?alt=media\&token=93d94f97-8dbb-4de1-a771-a6bf19ba71cf)

Поиск фразы “Привет мир” в 1 листе во 2 колонке (колонка B). Запрашиваем содержимое ячейки этой же строки в 5 колонке (колонка E):

![](https://lh4.googleusercontent.com/R4Mn5cI5-zz-g7_tMguc8OqXCYJVPFkhH2FJ7zgirn1v4JqMxIVSL7WNMXuFPq9L5MEKZD8qjGKJzU0eTEd600ImABBMY5vYAhvlimjAGc69PgCsivCc3LWvhw7cE7FD9rYAl2_i)

![Результат поиска - ячейка B9](https://lh3.googleusercontent.com/n9AUneRIzEIpeqjjVmPD0MscwIK0O103lIdJIx0ZtD6JaJYoRfPZPsKGIg34LZltHPujZZpeKGsD9AkqxIX_3MpZ2o_Zbtdu79OTQ-HVvdlbln7VQKqSSqiVHGx4tIWkN_I5slPs)

**2. По ключевым словам - K (латиница)**

Условия те же, что в первом примере.

`sheet_search_in_col_return_cell("#{sheet_id}", "поисковый запрос", 2, 5, "K", "Лист1")`

Например, если в столбце есть ячейка с текстом: “Передан поисковый запрос в службу”, то будет найдена эта ячейка, так как поисковый запрос входит в фразу: “Передан поисковый запрос в службу”

Поиск ключевого слова “сосед” в 1 листе в 1 колонке (колонка А). Запрашиваем содержимое ячейки этой же строки во 2 колонке (колонка B):

![](https://lh4.googleusercontent.com/5Hocj44nLcHFwfDgWLlo0DzQ6Gc2QImVnAZFFECK7VLTzXqdz_ba5UlDDylghu_-F3Xpit78OYb8VqnYjpv6-Aah8Jm5wO_sgPU7bMTP-BbV4hMiCWZ2rhrEJbZ4dofRNcSUcG0L)

![Результат поиска - ячейка А9](https://lh5.googleusercontent.com/hSEz0jwimAYnUqux_oaSXWomvhG_6tNpyL5OyZtNB8iFEL54YJxaEWXpYDrTyniWe5dUDcrcUJ_pP_0LIf9NT578rMBgnxiYlu2kbgHvug3hDRICING2y12jD332-PkXs3DT7xcX)

**3. Расстояние Левенштейна**

Условия те же, что в первом примере.

`sheet_search_in_col_return_cell("#{sheet_id}", "поисковый запрос", 2, 5, "80", "Лист1")`

В примере передали значение 80 - это минимальный порог похожести, регистр не учитывается (значение может быть от 1 до полного совпадения 100). Возвращает наилучшее совпадение.

Поиск фразы “Привет мир” (мы записали с ошибками “превет мор”) в 1 листе во 2 колонке (колонка B). Запрашиваем содержимое ячейки этой же строки в 5 колонке (колонка E)

![](https://lh4.googleusercontent.com/FchaC6PixQ0xpWIshyRgpe8V5UjKwprMs8Sv6vN6JoL4Jvs8XGraP-HzLwS0jLp7_dmtv1dNv8WUCQqmvbtJIPSp5MiKy9Bn9qQ9z3R0WJpFtmNzUeRQMO-nWLJ9TKQ3qgj8zxpE)

![](https://lh3.googleusercontent.com/paHcel7jI6wnAlheRArQn429SmFkhDvr6ufLYJBhDontRFCXHi5FnvApJY0NSMJgr8EOgpsiT43r8Q_b1j1H91kh5bQZD5wujLfMD-8PMsnHU4c6WNOIojszoo0nO60cPb2JsVmV)

**4. Используя регулярное выражение - R**

Условие: ищем в листе с названием Лист1, в колонке 1 ячейку по регулярному выражению "^\d\d\d$" (значение в ячейке состоит из 3 цифр), если такая будет найдена, то вернется значение в этой строке из колонки 5

`sheet_search_in_col_return_cell("#{sheet_id}", "^\d\d\d$", 1, 5, "R", "Лист1")`

{% hint style="info" %}
Обратите внимание, что само регулярное выражение передается вторым параметров, вместо фразы для поиска.
{% endhint %}

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FyjWGD3m8yk0uxMocDmL6%2Fimage.png?alt=media\&token=8026b2ba-acf9-4d42-bc56-db0f297cf68e)

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и результат поиска:

![](https://lh4.googleusercontent.com/szRO0czYSmuUmDtdMuhoeVeQ_FFyDBgsMrfWunhVEIFFDtf5ZDYDB4LHPP3EI2DNuyAx6eWKnMpN-Eelx9EuSzJ8w95gcddEouKPMLjX3KiFuGsdu9PfzHJek_rHWKsgkPcvY-GY)

**status** - результат поиска

**find** - значение из выбранное колонки

**row** - номер строки

**col** - номер столбца

**cell** - полное имя ячейки

Если возникла ошибка, то вернется статус false и описание ошибки `{"status":false,"err":"Ошибка или описание"}`

### Как осуществлять поиск по колонке и вывод текста из всей строки <a href="#docs-internal-guid-1b653c44-7fff-519c-27e0-2ca0a28dd1e9" id="docs-internal-guid-1b653c44-7fff-519c-27e0-2ca0a28dd1e9"></a>

Осуществляется с помощью функции:&#x20;

**sheet\_search\_in\_col\_return\_row(sheet\_id, query, col\_number, algorithm, worksheet\_name\_or\_index=None)**

**sheet\_id** - это идентификатор вашей гугл таблицы.

**query** - поисковый запрос, то что нужно найти

**col\_number** - номер колонки, в которой искать (нумерация с 1)

**algorithm** - алгоритм поиска (F - полное совпадение, K - наличие ключевых слов, R - регулярное выражение, 1-100 - процент похожести (подробнее выше))

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа или идентификатор листа

{% hint style="info" %}
Вернет строку первого найденного значения
{% endhint %}

Пример:

result = sheet\_search\_in\_col\_return\_row("#{sheet\_id}", "222", '1', 'F')

поиск строки 222 в колонке 1 и возврат всей строки.

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FinKGX27hrlaihzlkOdWX%2Fimage.png?alt=media\&token=8275c9ea-cfdb-4c8b-9a49-240e1efbd99c)

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

![](https://lh5.googleusercontent.com/snTZ1eh61wfaAaBC2kPt8UM9r4DCOzEoS3vvDTDmN1OpT1wb91OIFtScZBMtO_qvTlSgVm5ox7bu5Tw1ipP6ElYI1ze8dTJ5xM2PhmJ4kmAr7uZ1GTZ_5lpZd5hqAwJk4Qo1gyiO)

**status** - результат поиска

**row\_data** - словарь с данными строки

**row** - номер строки

**col** - номер столбца

**cell** - полное имя ячейки

Если возникла ошибка, то вернется статус false и описание ошибки `{"status":false,"err":"Ошибка или описание"}`

### Как осуществлять поиск по колонке и вывод текста из всей строки с выводом результата в виде массива <a href="#docs-internal-guid-1b653c44-7fff-519c-27e0-2ca0a28dd1e9" id="docs-internal-guid-1b653c44-7fff-519c-27e0-2ca0a28dd1e9"></a>

**sheet\_search\_in\_col\_return\_row\_array(sheet\_id, query, col\_number, algorithm, worksheet\_name\_or\_index=None)**, где:\
**sheet\_id** - это идентификатор вашей Google-таблицы.\
**query** - поисковый запрос, указание того, что нужно найти\
**col\_number** - номер колонки, в которой искать (нумерация с 1)\
**algorithm** - алгоритм поиска (F - полное совпадение, K - наличие ключевых слов, R - регулярное выражение, 1-100 - процент похожести (подробнее выше))\
**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа или идентификатор листа

Функция полностью аналогична функции **sheet\_search\_in\_col\_return\_row.** Разница только в выводе конечного результата поиска.

При успешном поиске в ответ будет получен массив по типу: \
\["222","ddddddd","то, что ищем",”еще что ищем”,"44444555"]. \
Если в найденной строке были пустые ячейки, то в массиве будут возвращены пустые значения.

### Как осуществлять поиск по колонке и вывод всех значений <a href="#docs-internal-guid-9aa9affe-7fff-9421-7005-d65619b45de7" id="docs-internal-guid-9aa9affe-7fff-9421-7005-d65619b45de7"></a>

Для нахождения всех заданных значений в колонке используйте функцию

**sheet\_search\_in\_col\_return\_cells\_list(sheet\_id, query, col\_number, return\_col, algorithm, worksheet\_name\_or\_index=None)**

**sheet\_id** - это идентификатор вашей гугл таблицы.

**query** - поисковый запрос, то что нужно найти

**col\_number** - номер колонки, в которой искать (нумерация с 1)

**return\_col -** указывает, из какого столбца вернуть значения, если в столбце col\_number что-то нашлось

**algorithm** - алгоритм поиска (F - полное совпадение, K - наличие ключевых слов, R - регулярное выражение, 1-100 - процент похожести (подробнее выше))

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа или идентификатор листа

Пример:

`result = sheet_search_in_col_return_cells_list("#{sheet_id}", "ффф", '1', '2', "F")`

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

![](https://lh3.googleusercontent.com/OgaiqSmlwcLQfGn_5QvRBFhGgVfvtKdxtrsZMDTfhYq8X64Z_uTTwLff5SmGicRJvljh-SPv83vkzg2AMXIJBXHQLunFKXGtIEPkpW3v-sgEQqRd0DUcxsODJLgdSNngeRym8Znp)

**status** - результат поиска

**rows\_index** - массив с номерами найденных строк

**quantity** - количество найденных строк

**list** - строка со всеми значениями из выбранного столбца

Если возникла ошибка, то вернется статус false и описание ошибки {"status":false,"err":"Ошибка или описание"}

### Как осуществлять поиск по нескольким колонкам и вывод всех значений <a href="#docs-internal-guid-6abb672c-7fff-e2fc-a839-1826a20b2505" id="docs-internal-guid-6abb672c-7fff-e2fc-a839-1826a20b2505"></a>

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

**sheet\_search\_in\_multiple\_cols\_return\_list(sheet\_id, columns, return\_col, with\_index, delimiter, algorithm, worksheet\_name\_or\_index=None)**

**sheet\_id** - это идентификатор вашей гугл таблицы.

**columns** - поисковый запрос, то что нужно найти

**return\_col** - номер колонки, в которой искать (нумерация с 1)

**with\_index** - индекс или номер в списке найденных значений (0 - нумерация (1,2,3,…); 1 - индекс строки; "" - список значений с новой строки без индексов и нумерации)

**delimiter** - разделитель между индексом и значением

**algorithm** - алгоритм поиска (F - полное совпадение, K - наличие ключевых слов, R - регулярное выражение, 1-100 - процент похожести (подробнее выше))

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа или идентификатор листа

Пример:

`result = sheet_search_in_multiple_cols_return_list("#{sheet_id}", '{"1":"ффф", "4": "ффф"}', '2', '1', ' - ', "F")`

`status = get(result, 'status')`

![](https://lh5.googleusercontent.com/0OzLHWOph2M5Hg5voItdqU0-ii5YXqGIb7OriaHdZJlcD85b6ag-V-Pvkd_TZNsU864cVhrXnK6gVnKZw87kxyhx7A387BvzpqDTmbgyZtTkTz93OzuP-D-YfJGn2y4CMjhG8VGm)

![Результат](https://lh3.googleusercontent.com/E2ra829uxR94UEJacezj9SHyHcr5BZWeA5cUYuR7dEBLOMTh4m7Q99h3HgirXDRcdbu6fsZWgp8CmJqcoon3W1yhp1ksupoGFi71POHpYzIgUBVKktRSupF9rH_7b7JAwoh8ILAo)

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и все ячейки со значениями&#x20;

`{"status":true,"rows_index":[11,22,15],"quantity":3,"list":"11 - 111\n15 - 222\n22 - 111\n"}`

**status** - результат поиска

**rows\_index** - массив с номерами найденных строк

**quantity** - количество найденных строк

**list** - строка со всеми значениями из выбранного столбца

Если возникла ошибка, то вернется статус false и описание ошибки `{"status":false,"err":"Ошибка или описание"}`

### Как осуществлять поиск по нескольким колонкам и вывод текста из всей строки <a href="#docs-internal-guid-96b3ea35-7fff-a806-89f6-07b5496fff8c" id="docs-internal-guid-96b3ea35-7fff-a806-89f6-07b5496fff8c"></a>

Если возникла необходимость искать по нескольким колонкам сразу и получить первую найденную строку, то нужно использовать следующую функцию

**sheet\_search\_in\_multiple\_cols\_return\_row(sheet\_id, columns, algorithm, worksheet\_name\_or\_index=None)**

**sheet\_id** - это идентификатор вашей гугл таблицы.

**columns** - поисковый запрос, то что нужно найти

**algorithm** - алгоритм поиска (F - полное совпадение, K - наличие ключевых слов, R - регулярное выражение, 1-100 - процент похожести (подробнее выше))

**worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа или идентификатор листа

Пример

`result = sheet_search_in_multiple_cols_return_row("#{sheet_id}", '{"1":"ффф", "4": "ффф"}', "F")`

`status = get(result, 'status')`

![](https://lh6.googleusercontent.com/Jk0dNg6uWoitXeg9BxexcvokRY-_5aa7Rk3qQN400ij-N34SgYpOUXpielUunHYjaY74xzDjxsyNtJva-ns_n4WhE_p6nQ7BVtwMuLhZP_h7_KvBkuCy4Wz0qcmh2OWdclfm_CrD)

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и все ячейки со значениями&#x20;

`{"status":true,"rows_index":[11,22,15],"quantity":3,"row_data":{"1":"ффф","2":"111","3":"","4":"ффф","5":"sds"},"row":11}`

**status** - результат поиска

**rows\_index** - массив с номерами найденных строк

**quantity** - количество найденных строк

**list** - строка со всеми значениями из выбранного столбца

Если возникла ошибка, то вернется статус false и описание ошибки `{"status":false,"err":"Ошибка или описание"}`

### **Как осуществить поиск по ячейке, а затем сделать запись в таблицу**

Если требуется найти какое-либо значение в колонке, а затем сделать запись на листе, то нужно использовать следующую функцию: \
**sheet\_search\_in\_col\_write\_cells(sheet\_id, cell\_data, query, col\_number=None, algorithm=None, worksheet\_name\_or\_index=None)**, где:\
**sheet\_id** - это идентификатор вашей Google-таблицы. \
**cell\_data** - словарь с параметрами '{"A": "value", "D": "#{email}"}' - где ключ - это буква колонки\
**query** - поисковый запрос, то что нужно найти \
**col\_number** - номер колонки, в которой искать (нумерация начинается с 1) \
**algorithm** - алгоритм поиска (F - полное совпадение, K - наличие ключевых слов, R - регулярное выражение, 1-100 - процент похожести (подробнее выше)) **worksheet\_name\_or\_id\_or\_index** - необязательный параметр, название листа или идентификатор листа&#x20;

Пример: \
result = sheet\_search\_in\_col\_write\_cells('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ', '{"t":"Пишем пишем"}','А вот и ячейка', 2, "F"), где:\
‘А вот и ячейка’ - значение для поиска, которое найдется по аналогии с функцией sheet\_search\_in\_col\_return\_cell, \
2 - номер столбца, \
а {"t":"Пишем пишем"} - фраза, которая запишется в таблицу по аналогии с функцией sheet\_mapping\_cells&#x20;

status = get(result, 'status')

![](https://lh5.googleusercontent.com/uUJktRIhJWvWSHorP6aJXcsm9wsHACMQham-P35wRpQObsq3GtoeZhkN791NEANvj9KkjpdJJ4LDpe0X1-vuA109z494fdDYkkTKT8dBC3JLlXPOQd8cjDxj3F2MMtevbTpeK3sIFCm4wEcBRA151aY)

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь, содержащий статус и все ячейки со значениями, вида: {"status":true,"number\_row":24}&#x20;

Можно сохранить номер строки number\_row и использовать для дальнейшей работы. Если возникла ошибка, то вернется статус false и описание ошибки.

### Арифметические действия в таблицах

К арифметическим действиям относятся сложение, вычитание, умножение и деление. Разберем подробнее:

#### - Деление

**sheet\_div\_to\_acell(sheet\_id, cell, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
cell - делимое, адрес ячейки в стиле A1 (буква столбца (латиница) и номер строки ), например: B2, C333. Если значение ячейки - пустое значение, то по умолчанию значение будет приравнено 0\
value - делитель, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Пример: \
result = sheet\_div\_to\_acell("#{sheet\_id}", 'A1', 10) - деление значения в ячейке А1 на 10. Результат будет записан в ту же ячейку.

Для записи адреса ячейки в стиле R1C1: \
**sheet\_div\_to\_cell(sheet\_id, row, col, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
row - номер строки (начинается с 1) \
col - номер колонки (начинается с 1) \
value - делитель, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Если значение ячейки, заданной параметрами row и  col - пустое значение, то по умолчанию значение будет приравнено 0

Пример: \
result = sheet\_div\_to\_cell("#{sheet\_id}", 1, 1, 10) - деление содержимого  ячейки R1C1 (или А1) на 10. Результат  будет записан в ту же ячейку

#### - Умножение&#x20;

**sheet\_mul\_to\_acell(sheet\_id, cell, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
cell - множитель1, адрес ячейки в стиле A1 (буква столбца (латиница) и номер строки ), например: B2, C333. Если значение ячейки - пустое значение, то по умолчанию значение будет приравнено 0\
value - множитель2, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Пример: \
result = sheet\_mul\_to\_acell("#{sheet\_id}", 'a1', 10) - умножение содержимого ячейки A1 на 10. Результат будет записан в ту же ячейку

Для записи адреса ячейки в стиле R1C1: \
**sheet\_mul\_to\_cell(sheet\_id, row, col, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
row - номер строки (начинается с 1) \
col - номер колонки (начинается с 1) \
value - множитель2, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Если значение ячейки, заданной параметрами row и  col - пустое значение, то по умолчанию значение будет приравнено 0

Пример:\
result = sheet\_mul\_to\_cell("#{sheet\_id}", 1, 2, 10) - умножение содержимого  ячейки R1C2 (или А2) на 10. Результат  будет записан в ту же ячейку

#### - Вычитание&#x20;

**sheet\_sub\_to\_acell(sheet\_id, cell, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
cell - уменьшаемое, адрес ячейки в стиле A1 (буква столбца (латиница) и номер строки).  Если значение ячейки - пустое значение, то по умолчанию значение будет приравнено 0 \
value - вычитаемое, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Пример:\
result = sheet\_sub\_to\_acell("#{sheet\_id}", 'a1', 10)&#x20;

Для записи адреса ячейки в стиле R1C1: \
**sheet\_sub\_to\_cell(sheet\_id, row, col, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
row - номер строки (начинается с 1) \
col - номер колонки (начинается с 1) \
value - вычитаемое, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Если значение ячейки, заданной параметрами row и  col - пустое значение, то по умолчанию значение будет приравнено 0

Пример:\
result = sheet\_sub\_to\_cell("#{sheet\_id}", 1, 1, 10)&#x20;

#### - Сложение&#x20;

**sheet\_add\_to\_acell(sheet\_id, cell, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
cell - слагаемое1, адрес ячейки в стиле A1 (буква столбца (латиница) и номер строки ).Если значение ячейки - пустое значение, то по умолчанию значение будет приравнено 0 \
value - слагаемое2, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Пример:\
result = sheet\_add\_to\_acell("#{sheet\_id}", 'a1', 10)

Для записи адреса ячейки в стиле R1C1: \
**sheet\_add\_to\_cell(sheet\_id, row, col, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
row - номер строки (начинается с 1) \
col - номер колонки (начинается с 1) \
value - слагаемое2, число \
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Если значение ячейки, заданной параметрами row и  col - пустое значение, то по умолчанию значение будет приравнено 0

Пример:\
result = sheet\_add\_to\_cell("#{sheet\_id}", 1,1, 10)&#x20;

#### - Конкатенация (сложение строк)

Дописывает к значению в ячейке то, что передано в параметрах функции:

**sheet\_append\_to\_acell(sheet\_id, cell, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
cell - слагаемое1, строка, адрес ячейки в стиле A1 (буква столбца (латиница) и номер строки). \
value - слагаемое2, строка\
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Пример:\
result = sheet\_append\_to\_acell("#{sheet\_id}", 'a1', 'дописать') \
Результат: Если ячейка содержала значение "Привет", то результатом выполнения функции конкатенации будет: "Приветдописать"

Для записи адреса ячейки в стиле R1C1: \
**sheet\_append\_to\_cell(sheet\_id, row, col, value, worksheet\_name\_or\_index)**, где:\
sheet\_id - ид Google-таблицы \
row - номер строки (начинается с 1) \
col - номер колонки (начинается с 1) \
value - слагаемое2, строка\
worksheet\_name\_or\_index - необязательный параметр, название листа или идентификатор листа

Пример:\
result = sheet\_append\_to\_cell("#{sheet\_id}", 1, 1, 'дописать')\
Результат: Если ячейка содержала значение "Привет", то результатом выполнения функции конкатенации будет: "Приветдописать"

### Как скопировать все данные с листа на другой лист

Чтобы скопировать всю информацию с листа на другой, воспользуйтесь функцией **sheet\_copy\_list(sheet\_id, sourceSheet\_Name, destinationSheet\_Name)**, где: \
sheet\_id - это идентификатор вашей Google-таблицы. \
sourceSheet\_Name - имя листа, который будет скопирован \
destinationSheet\_Name - имя листа, куда будут скопированы данные

Пример: \
result = sheet\_copy\_list('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ', 'Лист1','Лист5')

![](https://lh6.googleusercontent.com/uByeUwDXhx35IuWWY1gsqp0dLnJ6lNcgZOgn0z5KmXauR2QPcCsbUlKH6IsGnt2qAVfkxZztRw2plrhMTSUCDlpwsLwzeDZEARkbgKZt6BiHGNj7YP2mCx3AIWb1Nw23LFDewKA6UEwsmNQjdCQ)

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и уведомление: \
{"status":true, 'result': spreadsheet ‘Лист1’ copied to ‘Лист5’} \
status - результат копирования \
result - сообщение об операции Если возникла ошибка, то вернется статус false и описание ошибки

### **Как скопировать часть данных (диапазон ячеек) с одного листа на другой**

Чтобы скопировать часть информации (диапазон ячеек) с листа на другой, воспользуйтесь функцией **sheet\_copy\_data\_block(sheet\_id, sourceSheet\_Name, destinationSheet\_Name, sourseSheet\_data, destinationSheet\_data),** где \
sheet\_id - это идентификатор вашей Google-таблицы. \
sourceSheet\_Name - имя листа, данные которого  будут скопированы \
destinationSheet\_Name - имя листа, куда будут скопированы данные \
sourseSheet\_data - список с номерами ячеек диапазона-источника (откуда копируем данные)\
destinationSheet\_data - список с номерами ячеек диапазона-приемника (куда поместить данные)

Переменные sourseSheet\_data и destinationSheet\_data должны представлять собой список вида \[0,6,0,6], состоящий из четырех цифр, обозначающих номера начальной и конечной строк, начального и конечного столбцов соответственно.

{% hint style="danger" %}
Нумерация столбцов и строк в таблице начинается с нуля, т.е.: \
столбец A будет иметь номер 0, строка 1 - тоже номер 0;\
столбец С - 2, строка 2 - 1.

Например, запись \[0,1,0,3] - это диапазон ячеек A1:C1 (A1 - \[0,1], C1 - \[0,3]).

Обратите внимание: номера конечной строки, столбца не входят в диапазон
{% endhint %}

Пример диапазона ячеек в таблице: \
Блок данных, находящийся в блоке с концами в ячейках A1-А5-F1-F5 будет иметь координаты \[0,5,0,6]:

![](https://lh6.googleusercontent.com/Azu4i_b33I9i9sGVmUZ37Maf9jZ7z2PzjMzYCe7dUHm7yiV-qvnRxjwUXJvV_LRJcPOk9VLzzuRk1UG_N9yIP6yz6jxVnyolJmiGRLDgRPFoUka0mbK6nVSxwsSrtY3oQ2jX7iWX63-y7O2zlMaQ8O4)

{% hint style="danger" %}
При полном совпадении размеров диапазонов-источника данных sourseSheet\_data и приемника destinationSheet\_data данные будут скопированы полностью в указанных рамках;  \
Если размер диапазона-источника sourseSheet\_data больше диапазона-приемника destinationSheet\_data, то данные cкопируются полностью (превышая рамки диапазона-приемника); \
Если размер диапазона-приемника destinationSheet\_data больше источника sourseSheet\_data, то пустые ячейки будут дозаполнены в случае, если диапазон-источник поместится в полном объеме, иначе оставшиеся ячейки останутся пустыми.
{% endhint %}

Разберем на примерах:

1\) Если размер диапазона-источника sourseSheet\_data больше размеров диапазона-приемника destinationSheet\_data:

![](https://lh5.googleusercontent.com/9LwEdukntE-2dYQmjXJ9wLhWVuNsLmfG5QIEVpWKAVbOSOJFKqxj12S1Cb0yN4Nj29y-vZzJOWvNEzFeu56c5POcFQAyjaQ1fMZyfRcPqkKph_0sXhKixhf2fYIRakjc7a8pr2EZ7djNeO4EWE33JyI)

![диапазон-источник данных sourseSheet\_data \[0,5,0,6\]](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FpvE1ytcI1QO5lIM84fHp%2Fimage.png?alt=media\&token=61ec1b18-2a16-4a8e-a89c-d5ea0f854799)

![диапазон-приемник данных destinationSheet\_data \[0,3,0,2\]](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FStpO8Zy7QN5iPFAO4gy7%2Fimage.png?alt=media\&token=430e6fa8-5eaf-4cd0-994c-5d632198c139)

2\) Если размер диапазона-приемника данных destinationSheet\_data больше размера диапазона-источника sourseSheet\_data:

![](https://lh3.googleusercontent.com/uYnJPVtc81Qyqt5-UBsngu-xe65dDIvNd7pT9LTN5OkA2cjgd2uDP4VhXSFJpt7RsiI00ulx0-kNMWMqRj3yHnxpKpzjWIW_69FAllpHmKxXTPviB7tZX2KyTrowPsBBFy12fEFjpW6S8L88jcoNnU0)

![диапазон-приемник данных destinationSheet\_data \[1,10,1,7\]](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FunOoSLS6U4C7XyAFSyN7%2Fimage.png?alt=media\&token=edb4c5e8-125a-43b9-af1c-a86e8ef09845)

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2F67JHzUKKzIG7s58IPU6f%2Fimage.png?alt=media\&token=b2744855-9320-4b9c-81e0-ea0ca5a6a438)

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FXTlpyYY8HaTkLyKwjNmR%2Fimage.png?alt=media\&token=da68e243-9d0d-46ec-bd43-8447c10b9d70)

**Пример:**

Итак, разберем копирование диапазона данных A1:F5 с Лист1 в Лист2 со смещением на 1 строку и 1 столбец:\
data\_ag2 = \[0, 5, 0, 6] \
data\_ag3 = \[1, 6, 1, 7] \
result=sheet\_copy\_data\_block('1xeG0NcC5xaXVnXqgGY9z3uUkVlZX-vsx1xOTfK2Wnd4', 'Лист1', 'Лист2', '#{data\_ag2}', '#{data\_ag3}')

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FEVhs1Ehx08OcHHKRnktI%2Fimage.png?alt=media\&token=339365c0-61b3-4e19-b5d2-5315af825860)

![диапазон-приемник данных destinationSheet\_data \[1,6,1,7\]](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FocrtVy4qfjzA0OWeCwSy%2Fimage.png?alt=media\&token=a6ec59a4-27a3-4695-a70e-4d25ef6dfd7e)

Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и уведомление:

{"status":true, 'result': spreadsheet block from ‘Лист1’ copied to ‘Лист2’}, где: \
status - результат копирования \
result - сообщение об операции \
Если возникла ошибка, то вернется статус false и описание ошибки.

![](https://4216716816-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LxKl4rC_EcwBAz40Qn_%2Fuploads%2FK5t7I89qGE6eMJSFgsQy%2Fimage.png?alt=media\&token=1a9c5111-cc0e-4410-a8f4-a1d8a98c6f91)

</details>
