yeref 0.25.6__py3-none-any.whl → 0.25.7__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
@@ -16013,7 +16013,7 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16013
16013
|
|
16014
16014
|
# --- Начинаем сразу с объединённого цикла по всем метрикам r1–r5 ---
|
16015
16015
|
metrics_paths = [r1, r2, r3, r4, r5]
|
16016
|
-
tables = []
|
16016
|
+
tables = []
|
16017
16017
|
|
16018
16018
|
# 1) Собираем существующие CSV-файлы
|
16019
16019
|
for path in metrics_paths:
|
@@ -16038,45 +16038,43 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16038
16038
|
http_auth = credentials.authorize(httplib2.Http())
|
16039
16039
|
sheets_service = build('sheets', 'v4', http=http_auth, cache_discovery=False)
|
16040
16040
|
|
16041
|
-
# 4)
|
16041
|
+
# 4) Получаем metadata, ищем лист с названием PROJECT_USERNAME
|
16042
16042
|
spreadsheet = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
|
16043
|
-
|
16043
|
+
sheet_id_target = None
|
16044
16044
|
for sheet in spreadsheet.get('sheets', []):
|
16045
16045
|
props = sheet.get('properties', {})
|
16046
|
-
|
16047
|
-
|
16048
|
-
|
16046
|
+
if props.get('title') == PROJECT_USERNAME:
|
16047
|
+
sheet_id_target = props.get('sheetId')
|
16048
|
+
logger.info(f"Найден существующий лист '{PROJECT_USERNAME}', sheetId={sheet_id_target}")
|
16049
16049
|
break
|
16050
16050
|
|
16051
|
-
|
16052
|
-
|
16051
|
+
# 5) Если листа нет — создаём новый лист с названием PROJECT_USERNAME
|
16052
|
+
if sheet_id_target is None:
|
16053
|
+
add_request = {
|
16053
16054
|
'requests': [
|
16054
16055
|
{
|
16055
|
-
'
|
16056
|
+
'addSheet': {
|
16056
16057
|
'properties': {
|
16057
|
-
'sheetId': sheet_id_to_rename,
|
16058
16058
|
'title': PROJECT_USERNAME
|
16059
|
-
}
|
16060
|
-
'fields': 'title'
|
16059
|
+
}
|
16061
16060
|
}
|
16062
16061
|
}
|
16063
16062
|
]
|
16064
16063
|
}
|
16065
|
-
sheets_service.spreadsheets().batchUpdate(
|
16064
|
+
response = sheets_service.spreadsheets().batchUpdate(
|
16066
16065
|
spreadsheetId=dataroom_folder_id,
|
16067
|
-
body=
|
16066
|
+
body=add_request
|
16068
16067
|
).execute()
|
16069
|
-
|
16070
|
-
|
16071
|
-
logger.warning("Не найден лист 'Лист1' или 'Sheet1' для переименования.")
|
16068
|
+
sheet_id_target = response['replies'][0]['addSheet']['properties']['sheetId']
|
16069
|
+
logger.info(f"Создан новый лист '{PROJECT_USERNAME}', sheetId={sheet_id_target}")
|
16072
16070
|
|
16073
|
-
#
|
16071
|
+
# 6) Готовим запросы для записи всех таблиц одна за другой с промежутком
|
16074
16072
|
safe_title = PROJECT_USERNAME.replace("'", "\\'")
|
16075
16073
|
offset = 1 # первая строка, с которой начнём писать
|
16076
16074
|
data_requests = []
|
16077
16075
|
|
16078
16076
|
for tbl in tables:
|
16079
|
-
#
|
16077
|
+
# 6.1) Заголовок: имя CSV-файла
|
16080
16078
|
header_range = f"'{safe_title}'!A{offset}"
|
16081
16079
|
data_requests.append({
|
16082
16080
|
'range': header_range,
|
@@ -16086,7 +16084,7 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16086
16084
|
logger.info(f"Добавлен заголовок '{tbl['name']}' → A{offset}")
|
16087
16085
|
offset += 1
|
16088
16086
|
|
16089
|
-
#
|
16087
|
+
# 6.2) Содержимое CSV: все строки сразу под заголовком
|
16090
16088
|
data_range = f"'{safe_title}'!A{offset}"
|
16091
16089
|
data_requests.append({
|
16092
16090
|
'range': data_range,
|
@@ -16096,10 +16094,10 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16096
16094
|
logger.info(f"Добавлены {len(tbl['rows'])} строк из '{tbl['name']}' → A{offset}")
|
16097
16095
|
offset += len(tbl['rows'])
|
16098
16096
|
|
16099
|
-
#
|
16100
|
-
offset +=
|
16097
|
+
# 6.3) Оставляем минимум 2 пустые строки перед следующей таблицей
|
16098
|
+
offset += 2
|
16101
16099
|
|
16102
|
-
#
|
16100
|
+
# 7) Выполняем единый batchUpdate для всех data_requests
|
16103
16101
|
write_body = {
|
16104
16102
|
'valueInputOption': 'USER_ENTERED',
|
16105
16103
|
'data': data_requests
|
@@ -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=wRpSWql996MWX-i-4GjL4SUHNmNjwheGS0I0yrx7eRg,1056354
|
5
|
+
yeref-0.25.7.dist-info/METADATA,sha256=020yfGCI6pVZfOZEIAcchgFDr7IsnqdOluNCjrHkPo4,118
|
6
|
+
yeref-0.25.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
+
yeref-0.25.7.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
|
8
|
+
yeref-0.25.7.dist-info/RECORD,,
|
yeref-0.25.6.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=8Ow6asK12jj3noAAUVtCKwq-txpj_ks_w-L-IQKqaZA,1056443
|
5
|
-
yeref-0.25.6.dist-info/METADATA,sha256=bsrMXHVBgRzsBy8TBIwOSrV1PA13MYOgpYrFdb4BfPY,118
|
6
|
-
yeref-0.25.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
-
yeref-0.25.6.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
|
8
|
-
yeref-0.25.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|