yeref 0.24.96__py3-none-any.whl → 0.24.97__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
@@ -16011,27 +16011,34 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16011
16011
|
r4 = await return_retention_metrics(bot, data_users, EXTRA_D)
|
16012
16012
|
r5 = await return_profit_and_loss_metrics(bot, data_users, EXTRA_D)
|
16013
16013
|
|
16014
|
-
# === НОВЫЙ БЛОК: читаем CSV (r1) и заливаем его в Google‐таблицу ===
|
16015
16014
|
if r1 and os.path.isfile(r1):
|
16016
|
-
# 1) Авторизация в Google Sheets
|
16015
|
+
# 1) Авторизация в Google Sheets
|
16017
16016
|
scopes = r_conf('scopes', CONF_P)
|
16018
16017
|
credential_path = os.path.join(EXTRA_D, (r_conf('credential_file', CONF_P))[0])
|
16019
16018
|
credentials = ServiceAccountCredentials.from_json_keyfile_name(credential_path, scopes)
|
16020
16019
|
http_auth = credentials.authorize(httplib2.Http())
|
16021
16020
|
sheets_service = build('sheets', 'v4', http=http_auth, cache_discovery=False)
|
16022
16021
|
|
16023
|
-
# 2) Получаем metadata таблицы, чтобы
|
16022
|
+
# 2) Получаем metadata всей таблицы, чтобы увидеть, какие листы есть сейчас
|
16024
16023
|
spreadsheet = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
|
16024
|
+
logger.info(f"До переименования. Найдено листов: {len(spreadsheet.get('sheets', []))}")
|
16025
|
+
for sheet in spreadsheet.get('sheets', []):
|
16026
|
+
props = sheet.get('properties', {})
|
16027
|
+
logger.info(f" • sheetId={props.get('sheetId')} title='{props.get('title')}'")
|
16028
|
+
|
16029
|
+
# 3) Ищем лист с названием «Лист1» или «Sheet1»
|
16025
16030
|
sheet_id_to_rename = None
|
16031
|
+
original_title = None
|
16026
16032
|
for sheet in spreadsheet.get('sheets', []):
|
16027
16033
|
props = sheet.get('properties', {})
|
16028
16034
|
title = props.get('title', '')
|
16029
|
-
# если лист называется «Лист1» (русский по умолчанию) или «Sheet1» (английский)
|
16030
16035
|
if title in ['Лист1', 'Sheet1']:
|
16031
16036
|
sheet_id_to_rename = props.get('sheetId')
|
16037
|
+
original_title = title
|
16038
|
+
logger.info(f"Найден лист для переименования: sheetId={sheet_id_to_rename}, title='{title}'")
|
16032
16039
|
break
|
16033
16040
|
|
16034
|
-
#
|
16041
|
+
# 4) Если нашли, то переименовываем в PROJECT_USERNAME
|
16035
16042
|
if sheet_id_to_rename is not None:
|
16036
16043
|
rename_request = {
|
16037
16044
|
'requests': [
|
@@ -16050,28 +16057,51 @@ async def calc_metrics(bot, PROJECT_USERNAME, dataroom_folder_id, EXTRA_D, BASE_
|
|
16050
16057
|
spreadsheetId=dataroom_folder_id,
|
16051
16058
|
body=rename_request
|
16052
16059
|
).execute()
|
16060
|
+
logger.info(f"Запрос на переименование отправлен: '{original_title}' → '{PROJECT_USERNAME}'")
|
16061
|
+
|
16062
|
+
# 5) Подтягиваем снова metadata, чтобы убедиться, что название поменялось
|
16063
|
+
spreadsheet_after = sheets_service.spreadsheets().get(spreadsheetId=dataroom_folder_id).execute()
|
16064
|
+
logger.info("После переименования. Список листов теперь:")
|
16065
|
+
for sheet in spreadsheet_after.get('sheets', []):
|
16066
|
+
props = sheet.get('properties', {})
|
16067
|
+
logger.info(f" • sheetId={props.get('sheetId')} title='{props.get('title')}'")
|
16068
|
+
else:
|
16069
|
+
logger.warning("Не найден лист с названием 'Лист1' или 'Sheet1' — пропускаем переименование.")
|
16053
16070
|
|
16054
|
-
#
|
16071
|
+
# 6) Читаем CSV-файл (r1) целиком
|
16055
16072
|
with open(r1, newline='', encoding='utf-8') as csvfile:
|
16056
16073
|
reader = csv.reader(csvfile)
|
16057
16074
|
all_rows = list(reader)
|
16075
|
+
logger.info(f"Прочитано {len(all_rows)} строк из файла {r1}.")
|
16076
|
+
|
16077
|
+
# 7) Составляем диапазон для записи: используем PROJECT_USERNAME
|
16078
|
+
# Если название листа может содержать пробелы или спецсимволы, оборачиваем в одинарные кавычки:
|
16079
|
+
safe_title = PROJECT_USERNAME.replace("'", "\\'")
|
16080
|
+
range_str = f"'{safe_title}'!A1"
|
16081
|
+
logger.info(f"Будем записывать в диапазон: {range_str}")
|
16058
16082
|
|
16059
|
-
#
|
16083
|
+
# 8) Формируем тело запроса на запись
|
16060
16084
|
write_body = {
|
16061
16085
|
'valueInputOption': 'USER_ENTERED',
|
16062
16086
|
'data': [
|
16063
16087
|
{
|
16064
|
-
'range':
|
16088
|
+
'range': range_str,
|
16065
16089
|
'majorDimension': 'ROWS',
|
16066
16090
|
'values': all_rows
|
16067
16091
|
}
|
16068
16092
|
]
|
16069
16093
|
}
|
16070
|
-
|
16071
|
-
|
16072
|
-
|
16073
|
-
|
16074
|
-
|
16094
|
+
|
16095
|
+
# 9) Делаем batchUpdate, чтобы записать всё из all_rows
|
16096
|
+
try:
|
16097
|
+
response = sheets_service.spreadsheets().values().batchUpdate(
|
16098
|
+
spreadsheetId=dataroom_folder_id,
|
16099
|
+
body=write_body
|
16100
|
+
).execute()
|
16101
|
+
updated_cells = response.get('totalUpdatedCells', 0)
|
16102
|
+
logger.info(f"Успешно записано в Google Sheets: обновлено ячеек = {updated_cells}.")
|
16103
|
+
except Exception as e:
|
16104
|
+
logger.error(f"Ошибка при записи в Google Sheets: {e}")
|
16075
16105
|
else:
|
16076
16106
|
logger.warning(f"Файл с метриками не найден или не существует: {r1}")
|
16077
16107
|
|
@@ -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=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,,
|
yeref-0.24.96.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=Bfk-IETElHzdKl1GW3ZVK_vf1POOGS8aHSDd8tnvtXA,1053574
|
5
|
-
yeref-0.24.96.dist-info/METADATA,sha256=hjnk-lihxaTZDzGAfZyqgYTw2adnX-iB-TZqMijo8I4,119
|
6
|
-
yeref-0.24.96.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
7
|
-
yeref-0.24.96.dist-info/top_level.txt,sha256=yCQKchWHbfV-3OuQPYRdi2loypD-nmbDJbtt3OuKKkY,6
|
8
|
-
yeref-0.24.96.dist-info/RECORD,,
|
File without changes
|
File without changes
|