Поиск ячейки по цвету в MS Excel через GoogleSheets

Peka97

Новичок
Пользователь
Дек 20, 2021
3
0
1
Привет!

Такая проблема: есть онлайн гугл док с расписанием отдела, где сверху указаны дни месяца, слева имена агентов, а на перекрестии их часы работы (значение, например 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')
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 587
459
83
код вставьте как код, как задать вопрос
 
  • Мне нравится
Реакции: Student

Peka97

Новичок
Пользователь
Дек 20, 2021
3
0
1
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
думаю что если тема зовётся:

Поиск ячейки по цвету в MS Excel через GoogleSheets​

то так и надо действовать, а вы ы вопрос смешали всё (много) ботов и т.д. пжл укоротите код, чтобы касался того, что в теме
ps
о кодах цвета https://openpyxl.readthedocs.i... olors.html
https://openpyxl.readthedocs.i... olors.html
Обработка стилей ячеек и форматирование
https://www.blog.pythonlibrary... nd-python/
если решите, выложимте пжл код
 
Последнее редактирование:

Peka97

Новичок
Пользователь
Дек 20, 2021
3
0
1
Вопрос не актуален, уже сам написал код. Долго происходит всё у вас)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 587
459
83
Долго происходит всё у вас)
ну во первых, здесь никто вам ничего не должен, и что происходит долго, если никто ничего не делал?

ну и было бы неплохо показать ваше решение, может это поможет кому то в будущем...
 

Форум IT Специалистов