В предыдущих двух видео я говорил о чтении и о записи в электронную таблицу Google Sheets и с помощью языка программирования Python и Google Sheets API. Однако для наилучшего восприятия данных в электронных таблицах, для выделения заголовков или важных данных, нам уже давно привычно применять форматирование ячеек электронных таблиц. Это также можно сделать в коде на Питоне с помощью Google Sheets API.
Видео стилизации ячеек
Для оформления ячеек нам понадобится метод spreadsheets().batchUpdate() и структура RepeatCellRequest . Подробнее смотри видео. А исходный код примера из видео опубликован в репозитории на GitHub. А также ниже (но на гитхабе может быть более актуальная версия).
Код на Python для стилизации диапазона ячеек в Google Sheet с помощью API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
import os from random import randrange import httplib2 from googleapiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials """ Эта ветка для Видео о записи в электронные таблицы Google Sheets с помощью API Google Sheets https://youtu.be/RV-aN_WEFPE """ def get_service_sacc(): """ Могу читать и (возможно) писать в таблицы кот. выдан доступ для сервисного аккаунта приложения :return: """ creds_json = os.path.dirname(__file__) + "/creds/sacc1.json" scopes = ['https://www.googleapis.com/auth/spreadsheets'] creds_service = ServiceAccountCredentials.from_json_keyfile_name(creds_json, scopes).authorize(httplib2.Http()) return build('sheets', 'v4', http=creds_service) # Плейлист Google Sheets API https://www.youtube.com/playlist?list=PLWVnIRD69wY75tQAmyMFP-WBKXqJx8Wpq # https://docs.google.com/spreadsheets/d/xxx/edit#gid=0 spreadsheet_id = "xxx" # Получаю ID листа в электронной таблице # Нужен для repeatCell/range/sheetId # https://docs.google.com/spreadsheets/d/xxx/edit#gid=758897038 # https://docs.google.com/spreadsheets/d/<ID электронной таблицы (spreadsheet ID)>/edit#gid=<ID листа (sheet ID) > # sheet_id = 758897038 resp = get_service_sacc().spreadsheets().get(spreadsheetId=spreadsheet_id, ranges=["Лист3"], includeGridData=False).execute() sheet_id = resp.get("sheets")[0].get("properties").get("sheetId") def get_random_color() -> dict: """ Создаю случайный цвет с альфа каном https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/other#Color :return: """ return { "red": randrange(0, 255) / 255, "green": randrange(0, 255) / 255, "blue": randrange(0, 255) / 255, "alpha": randrange(0, 10) / 10 # 0.0 - прозрачный } # https://developers.google.com/sheets/api/samples/formatting body = { "requests": [ # <<<<--- МАССИВ, так НАДО !!! # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#repeatcellrequest { "repeatCell": { # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/other#GridRange "range": { "sheetId": sheet_id, "startRowIndex": 2, "startColumnIndex": 2, "endColumnIndex": 7, "endRowIndex": 6, }, # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#CellFormat "cell": { "userEnteredFormat": { "backgroundColor": get_random_color(), "horizontalAlignment": "LEFT", "textFormat": { "foregroundColor": get_random_color(), "fontFamily": "Arial", "bold": False } }, }, # https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask "fields": "userEnteredFormat.backgroundColor" } } ] } # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request resp = get_service_sacc().spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute() |
Если у вас остались вопросы по форматированию ячеек с помощью Google Sheets API, то смело спрашивайте их в комментариях под видео. Я стараюсь отвечать всем. Ну спасибо за лайки и подписки на канала Azzrael Code.
Марина 2022-07-01