Для работы с Google Таблицами необходимо выполнить подготовительные шаги:
Подготовка Google аккаунта и получение ключа для интеграции
Зайти на
В верхнем меню выберите или создайте новый проект
Нажмите на меню
перейдите в APIs & Services -> Enabled APIs & services
Enable APIs and services
Найдите Google Drive API
Нажмите Enable
Вернитесь назад
Найдите Google Sheets API
Нажмите Enable
Далее надо создать сервисный аккаунт если его нет
меню->IAM & Admin -> Service Accounts
Нажмите 'Create service account'
Впишите любое имя на английском и нажмите Done
Скопируйте имя в буфер обмена полное имя оно понадобится далее
Зайдите в созданный аккаунт.
Перейдите на вкладку Keys и нажмите Add Key->Create New Key
Выберите JSON и нажмите Create
Скачается JSON файл.
Подготовка Google Таблицы
Зайдите
Найдите имя вашего сервисного аккаунта
Создайте гугл таблицу и дайте ей осмысленное название
Зайдите в настройки доступа
Вставьте ПОЛНОЕ имя сервисного аккаунта и выберите роль Редактор и нажмите открыть доступ.
После выполнения подготовки у вас должен быть JSON-файл с ключом и Google Таблица, в которую добавлен ваш сервисный аккаунт в качестве редактора.
Примеры работы с Google Таблицами
Разберём два примера работы с Google Таблицами.
Пример 1. Запись в Google Таблицу
Задача: получить имя и номер телефона пользователя и сохранить их в таблицу.
Шаг 1. Создаём простого агента "Секретарь".
Системный промпт:
Ты виртуальный секретарь,
Спроси имя и номер телефона, после этого вызови функцию save_record_to_google_sheet
Шаг 2. В разделе Функции обязательно включите (если выключено) использование функций.
Создайте функцию save_record_to_google_sheet с описанием "Сохранить запись в Google Таблице".
Добавьте два параметра: name и phone_number.
Прокрутите страницу вниз и включите 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.
Код надо подготовить. Из файла с ключом скопируйте все что между фигурными скобочками и вставьте в 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 - тип услуги.
Сделайте его листовым (выпадающий список) и укажите названия всех услуг из таблицы, а также два значения: Да и Нет (для поиска по столбцу "Акция").
Включите 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 надо вставить данные из вашего JSON ключа, а в переменной table_name надо прописать имя вашей таблицы.
Код надо подготовить. Из файла с ключом скопируйте все что между фигурными скобочками и вставьте в json_data переменную
Не забудьте прописать имя вашей таблицы
table_name = 'Имя Вашей Таблицы' #тут прописываем имя таблицы
Тестирование:
Нажмите "Тестировать Код", выберите в параметрах service_name значение Да, запустите тест.
Проверьте результат:
Протестируйте в диалоге:
ИИ-Агент анализирует полученную информацию и выдаёт ответ на основе данных из таблицы
Шаг 3. Найдите ваш JSON-ключ, полученный на этапе
Перед следующим шагом найдите ваш JSON ключ полученный на шаге