Browse Source

отправка сообщений и приглашений в отдельные группы

master
parent
commit
c00cab2fbf
  1. 76
      backup_google_sheets.py
  2. 947
      probnik_Bot_for_HR.py
  3. 0
      sheets_backup/changes.json
  4. 2401
      sheets_backup/current_data.json
  5. 0
      ~$_бланк.docx

76
backup_google_sheets.py

@ -0,0 +1,76 @@
import os
import json
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
# Конфигурация
SPREADSHEET_IDS = ["1j12H6NCZec9MEWQypPbzhETNtn58fnin1HBRkkr3a1w", "1iJAfffxm5-rFXi8LB5g1rChp94Qfo-mgSDxsDii27oo"] # Список ID таблиц
BACKUP_FOLDER = "sheets_backup" # Папка для сохранения
CURRENT_DATA_FILE = os.path.join(BACKUP_FOLDER, "current_data.json") # Файл текущих данных
CHANGES_FILE = os.path.join(BACKUP_FOLDER, "changes.json") # Файл изменений
# Аутентификация Google Sheets API
def get_service():
from google.oauth2.service_account import Credentials
creds = Credentials.from_service_account_file("botforclinic-436512-0c117dd103a8.json")
return build("sheets", "v4", credentials=creds)
def load_current_data():
"""Загружает текущие данные из локального файла."""
if os.path.exists(CURRENT_DATA_FILE):
with open(CURRENT_DATA_FILE, "r", encoding="utf-8") as f:
return json.load(f)
return {}
def save_current_data(data, file_path):
"""Сохраняет данные в указанный файл."""
with open(file_path, "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
def calculate_changes(old_data, new_data):
"""Вычисляет изменения между старыми и новыми данными."""
changes = {}
for sheet_title, rows in new_data.items():
old_rows = set(tuple(row) for row in old_data.get(sheet_title, []))
new_rows = set(tuple(row) for row in rows)
added_rows = new_rows - old_rows
if added_rows:
changes[sheet_title] = [list(row) for row in added_rows]
return changes
def backup_google_sheets():
"""Создаёт копию всех таблиц, вычисляет изменения и сохраняет данные."""
service = get_service()
if not os.path.exists(BACKUP_FOLDER):
os.makedirs(BACKUP_FOLDER)
current_data = load_current_data()
updated_data = {}
for spreadsheet_id in SPREADSHEET_IDS:
try:
spreadsheet = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute()
spreadsheet_title = spreadsheet.get("properties", {}).get("title", "Unknown_Table")
sheets = spreadsheet.get("sheets", [])
for sheet in sheets:
sheet_title = sheet.get("properties", {}).get("title", "Unknown_Sheet")
range_name = f"'{sheet_title}'"
result = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_name).execute()
data = result.get("values", [])
updated_data[f"{spreadsheet_title}::{sheet_title}"] = data
except HttpError as error:
print(f"Ошибка при обработке таблицы ID {spreadsheet_id}: {error}")
# Вычисляем изменения
changes = calculate_changes(current_data, updated_data)
# Сохраняем обновлённые данные и изменения
save_current_data(updated_data, CURRENT_DATA_FILE)
save_current_data(changes, CHANGES_FILE)
print("Данные успешно обновлены и сохранены.")
print("Изменения:", changes if changes else "Нет изменений.")
if __name__ == "__main__":
backup_google_sheets()

947
probnik_Bot_for_HR.py

File diff suppressed because it is too large Load Diff

0
sheets_backup/changes.json

2401
sheets_backup/current_data.json

File diff suppressed because it is too large Load Diff

0
~$_бланк.docx

Loading…
Cancel
Save