k96beni commited on
Commit
5f9c2cf
·
verified ·
1 Parent(s): 8719c6a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -5
app.py CHANGED
@@ -591,10 +591,22 @@ def get_google_sheet():
591
  return None, None, None
592
 
593
  def get_sheet_data(sheet):
594
- """Hämta all data från sheet"""
595
  try:
596
- data = sheet.get_all_records()
597
- df = pd.DataFrame(data)
 
 
 
 
 
 
 
 
 
 
 
 
598
 
599
  # Konvertera viktiga kolumner till string
600
  if 'Account ID' in df.columns:
@@ -602,9 +614,25 @@ def get_sheet_data(sheet):
602
  if 'Områdeskod' in df.columns:
603
  df['Områdeskod'] = df['Områdeskod'].astype(str)
604
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
605
  return df
606
  except Exception as e:
607
  st.error(f"❌ Fel vid hämtning av data: {e}")
 
608
  return None
609
 
610
  def validate_password(df, password):
@@ -935,12 +963,19 @@ def batch_update_cells_with_tracking(sheet, changes, df, editor_email, log_sheet
935
  if col_name in headers:
936
  col_idx = headers.index(col_name) + 1
937
 
 
 
 
 
 
 
 
938
  # Lägg till huvuduppdateringen
939
  updates.append({
940
  'range': f'{gspread.utils.rowcol_to_a1(sheet_row, col_idx)}',
941
- 'values': [[new_value]]
942
  })
943
- print(f"[DEBUG] Förbereder uppdatering: {col_name} rad {sheet_row} till '{new_value}'")
944
 
945
  if not updates:
946
  return False, "❌ Inga giltiga uppdateringar att utföra"
 
591
  return None, None, None
592
 
593
  def get_sheet_data(sheet):
594
+ """Hämta all data från sheet med korrekt hantering av textformat"""
595
  try:
596
+ # Använd get_all_values() istället för get_all_records()
597
+ # för att få RAW text utan automatisk typkonvertering
598
+ all_values = sheet.get_all_values()
599
+
600
+ if not all_values or len(all_values) < 2:
601
+ st.error("❌ Sheetet är tomt eller har ingen data")
602
+ return None
603
+
604
+ # Första raden är headers
605
+ headers = all_values[0]
606
+ data_rows = all_values[1:]
607
+
608
+ # Skapa DataFrame
609
+ df = pd.DataFrame(data_rows, columns=headers)
610
 
611
  # Konvertera viktiga kolumner till string
612
  if 'Account ID' in df.columns:
 
614
  if 'Områdeskod' in df.columns:
615
  df['Områdeskod'] = df['Områdeskod'].astype(str)
616
 
617
+ # Speciell hantering för Telefon-kolumnen: ta bort apostrof-prefix
618
+ if 'Telefon' in df.columns:
619
+ df['Telefon'] = df['Telefon'].astype(str).apply(
620
+ lambda x: x.lstrip("'") if x and x.startswith("'") else x
621
+ )
622
+ # Konvertera "nan" och tomma strängar
623
+ df['Telefon'] = df['Telefon'].replace(['nan', 'None', ''], '')
624
+
625
+ # Rensa alla kolumner från eventuella apostrofer som inte behövs
626
+ for col in df.columns:
627
+ if df[col].dtype == 'object': # Text-kolumner
628
+ df[col] = df[col].astype(str).apply(
629
+ lambda x: x.lstrip("'") if isinstance(x, str) and x.startswith("'") else x
630
+ )
631
+
632
  return df
633
  except Exception as e:
634
  st.error(f"❌ Fel vid hämtning av data: {e}")
635
+ print(f"[ERROR] get_sheet_data fel: {e}")
636
  return None
637
 
638
  def validate_password(df, password):
 
963
  if col_name in headers:
964
  col_idx = headers.index(col_name) + 1
965
 
966
+ # Speciell hantering för Telefon-kolumnen: bevara inledande nollor
967
+ value_to_write = new_value
968
+ if col_name == 'Telefon' and new_value and str(new_value).startswith('0'):
969
+ # Lägg till ' prefix för att tvinga Google Sheets att behandla som text
970
+ value_to_write = f"'{new_value}"
971
+ print(f"[DEBUG] Telefonnummer börjar med 0, lägger till text-prefix: '{new_value}'")
972
+
973
  # Lägg till huvuduppdateringen
974
  updates.append({
975
  'range': f'{gspread.utils.rowcol_to_a1(sheet_row, col_idx)}',
976
+ 'values': [[value_to_write]]
977
  })
978
+ print(f"[DEBUG] Förbereder uppdatering: {col_name} rad {sheet_row} till '{value_to_write}'")
979
 
980
  if not updates:
981
  return False, "❌ Inga giltiga uppdateringar att utföra"