Подключение и работа с Google Таблицам

Подготовка для работы с Google Таблицами

Для работы с Google Таблицами необходимо выполнить подготовительные шаги:

Подготовка Google аккаунта и получение ключа для интеграции
  1. В верхнем меню выберите или создайте новый проект

  2. Нажмите на меню

  3. перейдите в APIs & Services -> Enabled APIs & services

  4. Enable APIs and services

  5. Найдите Google Drive API

  6. Нажмите Enable

  7. Вернитесь назад

  8. Найдите Google Sheets API

  9. Нажмите Enable

  10. Далее надо создать сервисный аккаунт если его нет меню->IAM & Admin -> Service Accounts

  11. Нажмите 'Create service account'

  12. Впишите любое имя на английском и нажмите Done

  13. Скопируйте имя в буфер обмена полное имя оно понадобится далее

  14. Зайдите в созданный аккаунт.

  15. Перейдите на вкладку Keys и нажмите Add Key->Create New Key

  16. Выберите JSON и нажмите Create

  17. Скачается JSON файл.

Подготовка Google Таблицы
  1. Найдите имя вашего сервисного аккаунта

  2. Создайте гугл таблицу и дайте ей осмысленное название

  3. Зайдите в настройки доступа

  4. Вставьте ПОЛНОЕ имя сервисного аккаунта и выберите роль Редактор и нажмите открыть доступ.

После выполнения подготовки у вас должен быть JSON-файл с ключом и Google Таблица, в которую добавлен ваш сервисный аккаунт в качестве редактора.

Примеры работы с Google Таблицами

Разберём два примера работы с Google Таблицами.


Пример 1. Запись в Google Таблицу

Задача: получить имя и номер телефона пользователя и сохранить их в таблицу.

Шаг 1. Создаём простого агента "Секретарь".

Системный промпт:

Ты виртуальный секретарь, 
Спроси имя и номер телефона, после этого вызови функцию save_record_to_google_sheet

Шаг 2. В разделе Функции обязательно включите (если выключено) использование функций.

Создайте функцию save_record_to_google_sheet с описанием "Сохранить запись в Google Таблице".

Добавьте два параметра: name и phone_number.

Шаг 3. Найдите ваш JSON-ключ, полученный на этапе Подготовка Google аккаунта и получение ключа для интеграции

Прокрутите страницу вниз и включите Python Script.

Шаг 4. Удалите текущий код и вставьте подготовленный код:

def write_to_google_sheet():
    scope = [
        'https://www.googleapis.com/auth/spreadsheets',
        'https://www.googleapis.com/auth/drive'
    ]

    # Надо заменить данные на ваш JSON ключ
    json_data = {
        "type": "service_account",
        "project_id": "your_project_id",
        "private_key_id": "your_private_key_id",
        "private_key": "-----BEGIN PRIVATE KEY-----\nyour_private_key\n-----END PRIVATE KEY-----\n",
        "client_email": "your_service_account_email",
        "client_id": "your_client_id",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "your_client_cert_url"
}
    # Получаем ServiceAccountCredentials из структуры словаря
    debug("Получаем ServiceAccountCredentials")
    ServiceAccountCredentials = oauth2client['service_account']['ServiceAccountCredentials']
    # Авторизация
    creds = ServiceAccountCredentials.from_json_keyfile_dict(json_data, scope)
    client = gspread.authorize(creds)

    # Открытие таблицы
    sheet = client.open(table_name).sheet1
    data_to_append = [args.get("name", ""), args.get("phone_number", "")]
    
    # Запись данных
    sheet.append_row(data_to_append)
    global result
    result = {
            'status': 'success',
            'write': {
                'message': 'Данные успешно записаны',
                'data': data_to_append
            }
    }
table_name = 'Имя Вашей Таблицы' #тут прописываем имя таблицы
result ={}
write_to_google_sheet()

Код надо подготовить. Из файла с ключом скопируйте все что между фигурными скобочками и вставьте в json_data переменную

Не забудьте прописать имя вашей таблицы

table_name = 'Имя Вашей Таблицы' #тут прописываем имя таблицы

Пример таблицы: Таблица "Contacts" с двумя колонками: "Имя" и "Номер телефона".

Тест:

Оставьте в полях name и phone_number значения test_value , нажмите "Запустить тест"— и убедитесь, что запись появилась в таблице.

Можно проверить работу из диалога

Убедитесь что, что запись появилась в таблице.


Пример 2. Чтение из таблицы

Задача: Получить цену на услуги из прайс-листа.

Прайслист

Создаём ИИ-агента "Мастер маникюра".

Напишем простенький промпт

Ты мастер маникюра Роза 🦋

Шаг за шагом выясни:
1. Тип услуги — используй read_data_from_google_sheet, чтобы проверить, есть ли такая услуга.
2. Время записи — используй get_available_start_times_by_datetime_range.
3. Имя и номер телефона.

Будь дружелюбной, используй эмодзи, шути, дари клиенту хорошее настроение 💅✨

Создайте функцию read_data_from_google_sheet (Чтение из гугл таблиц)

Добавьте параметр функции для поиска: service_name - тип услуги.

Сделайте его листовым (выпадающий список) и укажите названия всех услуг из таблицы, а также два значения: Да и Нет (для поиска по столбцу "Акция").

Перед следующим шагом найдите ваш JSON ключ полученный на шаге Подготовка Google аккаунта и получение ключа для интеграции

Включите Python Script и замените код в поле "Код Функции" на код ниже

scope = [
    'https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive'
]
debug("Область доступа определена")

# Данные сервисного аккаунта в формате JSON
json_data =  {
        "type": "service_account",
        "project_id": "your_project_id",
        "private_key_id": "your_private_key_id",
        "private_key": "-----BEGIN PRIVATE KEY-----\nyour_private_key\n-----END PRIVATE KEY-----\n",
        "client_email": "your_service_account_email",
        "client_id": "your_client_id",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "your_client_cert_url"
}
debug("JSON данные сервисного аккаунта подготовлены")
def search_in_sheet(query):
    # Получаем ServiceAccountCredentials из структуры словаря
    debug("Получаем ServiceAccountCredentials")
    ServiceAccountCredentials = oauth2client['service_account']['ServiceAccountCredentials']
    
    # Создаем учетные данные из JSON
    debug("Создаем учетные данные")
    creds = ServiceAccountCredentials.from_json_keyfile_dict(json_data, scope)
    
    # Авторизуемся в Google Sheets
    debug("Авторизация в Google Sheets")
    client = gspread.authorize(creds)
    
    # 1. Открытие таблицы
    
    debug(f"Открываем таблицу {table_name}")
    sheet = client.open(table_name).sheet1
    
      
    # 2. ЧТЕНИЕ данных из таблицы
    debug("ЧТЕНИЕ: Получаем данные из таблицы")
    
    debug("Получаем все данные")
    all_values = sheet.get_all_values()
    headers = all_values[0]

    results = []
    for row in all_values[1:]:  # Пропускаем заголовки
        for cell in row:
            if query.lower() in str(cell).lower():
                results.append(row)
                break  # если хотя бы одна ячейка подходит — добавляем строку и переходим к следующей

    return results

table_name = 'Имя Вашей Таблицы' #тут прописываем имя таблицы
query = args.get("service_name", "")
found_rows = search_in_sheet(query)

result = {'status': 'success',
        'read': {
               'data': found_rows  # Все найденные строки строки
        }}

Код надо подготовить. Из файла с ключом скопируйте все что между фигурными скобочками и вставьте в json_data переменную

Не забудьте прописать имя вашей таблицы

table_name = 'Имя Вашей Таблицы' #тут прописываем имя таблицы

Тестирование:

Нажмите "Тестировать Код", выберите в параметрах service_name значение Да, запустите тест.

Проверьте результат:

Протестируйте в диалоге:

ИИ-Агент анализирует полученную информацию и выдаёт ответ на основе данных из таблицы

Last updated