yeref 0.24.97__py3-none-any.whl → 0.24.98__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
yeref/yeref.py
CHANGED
@@ -16019,14 +16019,13 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16019
16019
|
http_auth = credentials.authorize(httplib2.Http())
|
16020
16020
|
sheets_service = build('sheets', 'v4', http=http_auth, cache_discovery=False)
|
16021
16021
|
|
16022
|
-
# 2) Получаем metadata всей
|
16022
|
+
# 2) Получаем metadata всей таблицы и ищем лист «Лист1»/«Sheet1» для переименования
|
16023
16023
|
spreadsheet = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
|
16024
16024
|
logger.info(f"До переименования. Найдено листов: {len(spreadsheet.get('sheets', []))}")
|
16025
16025
|
for sheet in spreadsheet.get('sheets', []):
|
16026
16026
|
props = sheet.get('properties', {})
|
16027
16027
|
logger.info(f" • sheetId={props.get('sheetId')} title='{props.get('title')}'")
|
16028
16028
|
|
16029
|
-
# 3) Ищем лист с названием «Лист1» или «Sheet1»
|
16030
16029
|
sheet_id_to_rename = None
|
16031
16030
|
original_title = None
|
16032
16031
|
for sheet in spreadsheet.get('sheets', []):
|
@@ -16038,7 +16037,6 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16038
16037
|
logger.info(f"Найден лист для переименования: sheetId={sheet_id_to_rename}, title='{title}'")
|
16039
16038
|
break
|
16040
16039
|
|
16041
|
-
# 4) Если нашли, то переименовываем в PROJECT_USERNAME
|
16042
16040
|
if sheet_id_to_rename is not None:
|
16043
16041
|
rename_request = {
|
16044
16042
|
'requests': [
|
@@ -16059,7 +16057,7 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16059
16057
|
).execute()
|
16060
16058
|
logger.info(f"Запрос на переименование отправлен: '{original_title}' → '{PROJECT_USERNAME}'")
|
16061
16059
|
|
16062
|
-
#
|
16060
|
+
# Проверим изменения
|
16063
16061
|
spreadsheet_after = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
|
16064
16062
|
logger.info("После переименования. Список листов теперь:")
|
16065
16063
|
for sheet in spreadsheet_after.get('sheets', []):
|
@@ -16068,42 +16066,77 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16068
16066
|
else:
|
16069
16067
|
logger.warning("Не найден лист с названием 'Лист1' или 'Sheet1' — пропускаем переименование.")
|
16070
16068
|
|
16071
|
-
#
|
16072
|
-
|
16073
|
-
|
16074
|
-
|
16075
|
-
|
16076
|
-
|
16077
|
-
|
16078
|
-
|
16079
|
-
|
16080
|
-
|
16081
|
-
|
16082
|
-
|
16083
|
-
|
16084
|
-
|
16085
|
-
|
16086
|
-
|
16087
|
-
{
|
16088
|
-
|
16089
|
-
|
16090
|
-
'values': all_rows
|
16091
|
-
}
|
16092
|
-
]
|
16093
|
-
}
|
16069
|
+
# 3) Подготовим список «таблиц» (r1–r5). Пробежимся по каждому r и, если файл существует, прочитаем его
|
16070
|
+
table_paths = [
|
16071
|
+
r1,
|
16072
|
+
r2 if 'r2' in locals() else None,
|
16073
|
+
r3 if 'r3' in locals() else None,
|
16074
|
+
r4 if 'r4' in locals() else None,
|
16075
|
+
r5 if 'r5' in locals() else None,
|
16076
|
+
]
|
16077
|
+
tables = [] # будет список словарей { 'name': basename, 'rows': [[...], ...] }
|
16078
|
+
for idx, path in enumerate(table_paths, start=1):
|
16079
|
+
if path and os.path.isfile(path):
|
16080
|
+
basename = os.path.basename(path)
|
16081
|
+
with open(path, newline='', encoding='utf-8') as csvfile:
|
16082
|
+
reader = csv.reader(csvfile)
|
16083
|
+
rows = list(reader)
|
16084
|
+
logger.info(f"Для таблицы #{idx}: найден файл '{basename}', строк = {len(rows)}.")
|
16085
|
+
tables.append({'name': basename, 'rows': rows})
|
16086
|
+
else:
|
16087
|
+
logger.warning(f"Таблица #{idx}: файл не найден или не существует: {path}")
|
16094
16088
|
|
16095
|
-
|
16096
|
-
|
16097
|
-
|
16098
|
-
|
16099
|
-
|
16100
|
-
|
16101
|
-
|
16102
|
-
|
16103
|
-
|
16104
|
-
|
16089
|
+
if not tables:
|
16090
|
+
logger.warning("Ни один CSV-файл (r1–r5) не найден. Прерываем запись.")
|
16091
|
+
else:
|
16092
|
+
# 4) Вычисляем, куда вставлять каждый блок: начинаем с 1-й строки
|
16093
|
+
# и гарантируем между таблицами минимум 2 пустые строки
|
16094
|
+
safe_title = PROJECT_USERNAME.replace("'", "\\'")
|
16095
|
+
offset = 1 # строка, с которой вставляем следующий блок
|
16096
|
+
data_requests = []
|
16097
|
+
|
16098
|
+
for tbl in tables:
|
16099
|
+
# 4.1) Вставляем название файла (одна строка)
|
16100
|
+
header_range = f"'{safe_title}'!A{offset}"
|
16101
|
+
data_requests.append({
|
16102
|
+
'range': header_range,
|
16103
|
+
'majorDimension': 'ROWS',
|
16104
|
+
'values': [[tbl['name']]]
|
16105
|
+
})
|
16106
|
+
logger.info(f"Добавили запрос на запись заголовка '{tbl['name']}' в A{offset}.")
|
16107
|
+
offset += 1
|
16108
|
+
|
16109
|
+
# 4.2) Вставляем саму таблицу (все строки CSV) сразу под названием
|
16110
|
+
data_range = f"'{safe_title}'!A{offset}"
|
16111
|
+
data_requests.append({
|
16112
|
+
'range': data_range,
|
16113
|
+
'majorDimension': 'ROWS',
|
16114
|
+
'values': tbl['rows']
|
16115
|
+
})
|
16116
|
+
logger.info(
|
16117
|
+
f"Добавили запрос на запись {len(tbl['rows'])} строк таблицы '{tbl['name']}' в A{offset}.")
|
16118
|
+
offset += len(tbl['rows'])
|
16119
|
+
|
16120
|
+
# 4.3) Оставляем минимум 2 пустые строки перед следующей таблицей
|
16121
|
+
offset += 2
|
16122
|
+
|
16123
|
+
# 5) Выполняем единственный batchUpdate с all data_requests
|
16124
|
+
write_body = {
|
16125
|
+
'valueInputOption': 'USER_ENTERED',
|
16126
|
+
'data': data_requests
|
16127
|
+
}
|
16128
|
+
try:
|
16129
|
+
response = sheets_service.spreadsheets().values().batchUpdate(
|
16130
|
+
spreadsheetId=dataroom_folder_id,
|
16131
|
+
body=write_body
|
16132
|
+
).execute()
|
16133
|
+
total_cells = response.get('totalUpdatedCells', 0)
|
16134
|
+
logger.info(f"Успешно записано в Google Sheets: всего обновлено ячеек = {total_cells}.")
|
16135
|
+
except Exception as e:
|
16136
|
+
logger.error(f"Ошибка при записи всех таблиц в Google Sheets: {e}")
|
16105
16137
|
else:
|
16106
|
-
logger.warning(f"Файл
|
16138
|
+
logger.warning(f"Файл r1 не найден или не существует: {r1}")
|
16139
|
+
|
16107
16140
|
|
16108
16141
|
except Exception as e:
|
16109
16142
|
logger.info(log_ % str(e))
|
@@ -0,0 +1,8 @@
|
|
1
|
+
yeref/__init__.py,sha256=Qpv3o6Xa78VdLcsSRmctGtpnYE9btpAkCekgGhgJyXM,49
|
2
|
+
yeref/l_.py,sha256=LMX_olmJwq-tgoALJCnhV_fGrL_i_43yBLkLIcEVqGo,1176743
|
3
|
+
yeref/tonweb.js,sha256=Jf6aFOQ1OIY4q7fINYz-m5LsI3seMus124M5SYYZmtE,443659
|
4
|
+
yeref/yeref.py,sha256=p6g9zw-LRJx_rpHe7tTAR2BA7Rdsuz5PAtKwlNKf_nI,1057610
|
5
|
+
yeref-0.24.98.dist-info/METADATA,sha256=EIc6Ur84xwVbYbNOYxbr5B7cwkQTgtLwMLmfOQFQl2s,119
|
6
|
+
yeref-0.24.98.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
+
yeref-0.24.98.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
|
8
|
+
yeref-0.24.98.dist-info/RECORD,,
|
yeref-0.24.97.dist-info/RECORD
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
yeref/__init__.py,sha256=Qpv3o6Xa78VdLcsSRmctGtpnYE9btpAkCekgGhgJyXM,49
|
2
|
-
yeref/l_.py,sha256=LMX_olmJwq-tgoALJCnhV_fGrL_i_43yBLkLIcEVqGo,1176743
|
3
|
-
yeref/tonweb.js,sha256=Jf6aFOQ1OIY4q7fINYz-m5LsI3seMus124M5SYYZmtE,443659
|
4
|
-
yeref/yeref.py,sha256=jdG1SO9WRV8e0o8HjviTOMG-m4rxya1lcClakmVDVZc,1055625
|
5
|
-
yeref-0.24.97.dist-info/METADATA,sha256=MNCnHGJUW1SZaDvGSRhQClVxHOkxpX0KrrOI50o-aDM,119
|
6
|
-
yeref-0.24.97.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
-
yeref-0.24.97.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
|
8
|
-
yeref-0.24.97.dist-info/RECORD,,
|
File without changes
|
File without changes
|