Telegram bot excel python
Добрые люди помогите уже пару дней не могу понять что делать!
Мне нужно Телеграм бот парсер по заданой строчки выводилась информация.
Например, у меня в excel-листе написано в первом столбе текст, а во втором инфа.
Мне нужно написать боту:
ул. аношкина 85
а он мне выводит инфу, которая прописана на эту улицу.
https://docs.google.com/spreadsheets/d/1ARLdxhbGGgsAPzcPZVL9Dh1TI2IKr1iJt-Pd5HJrmlI
Ответы (1 шт):
Для работы с Google Sheets API вам необходимо получить API ключ (в форме json). Вот пример работы кода:
import httplib2
import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials
def auth(CREDENTIALS_FILE):
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())
return apiclient.discovery.build('sheets', 'v4', http=httpAuth)
CREDENTIALS_FILE = ""#Название вашего json ключя
service = auth(CREDENTIALS_FILE)
После этого пишем функцию, которая возвращает инфу об адресе.
def get_info(address):
def get_spreadsheet_values(list_name:str, range:str, type:str):
values = service.spreadsheets().values().get(
spreadsheetId = config.spreadsheet_id,
range = "'" + list_name + "'!" + range,
majorDimension = type
).execute()
return(values['values'])
def get_spreadsheet_data(range):
# list_name = "Лист2"
try:
return get_spreadsheet_values(list_name, range, "ROWS")
except:
return []
data = get_spreadsheet_data("A1:A999") #2-у мерный массив, [[A1],[A2]......
for i, el in enumerate(data):
if (el[0] == address):
return get_spreadsheet_data("B"+i)[0][0]:
info = get_info(address)
(адреса в столбце A, Данные в столбце B) Далее при помощи PyTelegramBotApi отправляем из пользователю
bot.send_message(chat_id=chat_id,
, info)
ccылка на официальный API от Google
ccылка на пример простого проекта с Google Spreadsheet Api на gitHub - именно из него я брал все функции получения информации по range итп. Данные с него так же отправляются пользователю через Telegram, но благодаря http API, возможно это вам будет предпочтительней.