Привет!
Такая проблема: есть онлайн гугл док с расписанием отдела, где сверху указаны дни месяца, слева имена агентов, а на перекрестии их часы работы (значение, например 10-22) и их обязанность на сегодня (желтый, красный и т.п., каждый цвет определяет род занятий на день).
Я через бота в телеграмме (на aiogram) сделал команду, который парсит дату системы, сверяет её с гугл доком и далее выводит в формате 'name' + 'hours'.
Остался последний штрих: чтобы код при условии, что ячейка цветная (определенного цвета), то он добавлял надпись 'role' (которая будет уже в себе нести строку с опозданием роли в зависимости от цвета). Сразу оговорка - цвет есть не у всех ячеек, потому что есть люди без ролей.
Как реализовать это в рамках кода?
Сейчас код выглядит вот так:
Такая проблема: есть онлайн гугл док с расписанием отдела, где сверху указаны дни месяца, слева имена агентов, а на перекрестии их часы работы (значение, например 10-22) и их обязанность на сегодня (желтый, красный и т.п., каждый цвет определяет род занятий на день).
Я через бота в телеграмме (на aiogram) сделал команду, который парсит дату системы, сверяет её с гугл доком и далее выводит в формате 'name' + 'hours'.
Остался последний штрих: чтобы код при условии, что ячейка цветная (определенного цвета), то он добавлял надпись 'role' (которая будет уже в себе нести строку с опозданием роли в зависимости от цвета). Сразу оговорка - цвет есть не у всех ячеек, потому что есть люди без ролей.
Как реализовать это в рамках кода?
Сейчас код выглядит вот так:
Python:
def getDataFromExcelTable():
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()
result_month = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID,
range=SAMPLE_RANGE_NAME_MONTH).execute()
values = result_month.get('values', [])
df = pd.DataFrame(values)
df_replace = df.replace([''], [None])
processed_dataset = df_replace.values.tolist()
result_month = {}
dateColumn = -1
date_now = datetime.datetime.now().strftime("%d.%m")
if values:
for _, row in enumerate(processed_dataset):
for index, column in enumerate(row):
if str(column) == date_now:
dateColumn = index
break
if dateColumn < 0:
return result_month
for rowIndex, row in enumerate(processed_dataset):
if rowIndex > 0 and row[0] is not None and row[dateColumn] is not None:
result_month[row[0]] = row[dateColumn]
return result_month
month = 'A22:AH35'
@dp.message_handler(commands="schedule")
@dp.message_handler(Text(equals="Расписание мониторинга"))
async def schedule(message: types.Message):
user = BotUsers.get(message.chat.id)
reply = "Расписание работы отдела мониторинга:\n"
data = google.getDataFromExcelTable()
for name in data:
reply = reply + name + " " + data[name] + "\n"
if user.is_admin():
await message.reply(reply, reply_markup=keyboard.info_panel, parse_mode='Markdown')
if not user.is_admin():
await message.reply(reply, reply_markup=keyboard.info_panel, parse_mode='Markdown')
Последнее редактирование: