@neuro4live

Как из телеграм-бота передать информацию в гугл-таблицы?

Есть телеграм-бот, который в ответ на текстовое сообщение пересылает его в ответ. Если прислать видеофайл, то бот в ответ присылает file_id. Есть скрипт для редактирования гугл-таблицы. Используя модуль субпроцесс в скрипте гугл-таблиц, получается запустить телеграм-бота. Мне нужно, чтобы в гугл-таблицы в одну колонку заносились тектовые сообщения, которые присылают боту, а в другую file_id (присланных видео боту). Пожалуйста, помогите это реализовать.

Вот код телеграм-бота:
import telebot
bot = telebot.TeleBot('токен бота, думаю, вам не нужен)))')
 
@bot.message_handler(content_types=['text'])
def repeat_all_message(message):
  print(message.text)
  bot.send_message(message.chat.id,message.text)
 
@bot.message_handler(content_types=['video'])
def command_handle_video(message):
  bot.send_message(message.chat.id, message.video.file_id)
  print(message.video.file_id)
 
if __name__ == '__main__':
  bot.polling(none_stop=True)


Вот скрипт для редактирования гугл-таблицы:
# Подключаем библиотеки
import httplib2
import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials
import subprocess
 
 
CREDENTIALS_FILE = 'cybernetic-apex-306610-trtr21fdf.json'  # Имя файла с закрытым ключом, вы должны подставить свое
 
# Читаем ключи из файла
credentials = ServiceAccountCredentials.from_json_keyfile_name(CREDENTIALS_FILE, ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'])
 
httpAuth = credentials.authorize(httplib2.Http()) # Авторизуемся в системе
service = apiclient.discovery.build('sheets', 'v4', http = httpAuth) # Выбираем работу с таблицами и 4 версию API
 
 
results = service.spreadsheets().values().batchUpdate(spreadsheetId = '1FX11pgtcvm6OPgmxTEao-25LOW22cbokVJ_pMXZYHvw', body = {
    "valueInputOption": "USER_ENTERED", # Данные воспринимаются, как вводимые пользователем (считается значение формул)
    "data": [
        {"range": "Лист номер один!A2:B10",
         "majorDimension": "ROWS",     # Сначала заполнять строки, затем столбцы
         "values": [
                    ["Text message", "File_id"], # Заполняем первую строку
                    ['result = p.communicate()[0]', 'Id']  # Заполняем вторую строку
                   ]}
    ]
}).execute()
 
p=subprocess.Popen(['/usr/bin/python3', '/home/roman/PycharmProjects/uznaemfileID/file_id.py', 'stdout=subprocess.PIPE', 'stderr=subprocess.STDOUT'])
result = p.communicate()[0]
  • Вопрос задан
  • 1335 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
Это задание, а не вопрос.

Решение очень простое: возьмите первый код, отладьте его, чтобы получать данные из Телеграм. Потом возьмите второй код, отладьте его, чтобы записывать данные в Таблицу. Соедините оба код в модуле или функции и все заработает само.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Roktober
Люблю Linux && Python
Какое совпадение, вчера писал такую штуку
советую использовать gspread
https://gitlab.com/roktober/money_observer
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы