Для работы с 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 Таблицами
Разберём 2 примера работы с гугл таблицами
Пример 1. Запись в Google Таблицу
Задача: получить Имя и номер телефона и сохранить в Google таблицу
Приступим: Сделаем простенького агента Секретарь
Системный промпт:
Ты виртуальный секретарь,
Спроси имя и номер телефона, после этого вызови функцию save_record_to_google_sheet
Пойдем в Функции. Обязательно включаем (если выключено) использование функций.
Создадим агенту функцию save_record_to_google_sheet с описанием "сохранить запись в гугл таблицах".
Добавим 2 параметра функции name и phone_number
Прокрутим страницу вниз и включим Python Script
имеется подготовленный скрипт
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 надо вставить данные из вашего JSON ключа, а в переменной table_name надо прописать имя вашей таблицы.
Код надо подготовить. Из файла с ключом скопируйте все что между фигурными скобочками и вставьте в json_data переменную
Не забудьте прописать имя вашей таблицы
table_name = 'Имя Вашей Таблицы' #тут прописываем имя таблицы
Удалим весь код из поля "Код функции" и вставим наш подготовленный код.
У меня есть таблица Contacts, c 2 колонками: "Имя" и "Номер телефона"
Сначала протестируем работу из функции. оставим Name и Phone_number со значениями test_value
Тест успешен, проверяем google таблицу, запись с значениями test_value появилась
Проверим работу функции из диалога
Функция сработал, проверяем google таблицу, запись с переданными значениями добавилась в таблицу
Пример 2. Чтение из таблицы
Задача: Есть небольшой прайслист, нужно из него получать цену на разные услуги. ИИ-агент Мастер маникюра
Способ, описанный ниже, не подойдёт для больших таблиц.
Есть ИИ-агент Мастер маникюра
Напишем простенький промпт
Ты мастер маникюра Роза,
Шаг за шагом выясни следующие пункты:
Выясни тип услуги используй read_data_from_google_sheet что бы проверить есть ли такая услуга
Когда вам удобно записаться на маникюр, для получения доступного времени для записи используй функцию get_available_start_times_by_datetime_range
уточни имя и номер телефона
Собрав данные используй функцию create_event
Будь дружелюбной, жизнерадостной, рассказывай интересные факты о выбранных клиентом маникюре, в общении активно используй Emoji, шутки и дари хорошее настроение клиенту.
Не отвечай на вопросы за рамками своей роли, возвращай клиента к теме маникюра.
Создадим функцию read_data_from_google_sheet (Чтение из гугл таблиц)
Добавим параметр функции для поиска: service_name - тип услуги.
Сделаем параметр личтовым и перечислим названия услуг из нашей таблицы, так же добавим 2 значения "Да" и "Нет" потому что поиск будет так же по этим ключевым словам по столбцу акция
Прокрутим страницу вниз и включим 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 = 'Имя Вашей Таблицы' #тут прописываем имя таблицы
Протестируем код, для этого нажимаем "Тестировать Код", прокрутим вниз, и выберем значение "Да" в свойствах функции и нажимаем "Запустить Тест"
Получаем результат:
Протестируем в диалоге:
ИИ-Агент анализирует полученную информацию и выдаёт ответ на основе данных из таблицы
Перед следующим шагом найдите ваш JSON ключ полученный на шаге
Перед следующим шагом найдите ваш JSON ключ полученный на шаге