Power Automate: errore GetTable “data type is not supported” sulla colonna Client (Excel/SharePoint) – diagnosi e soluzioni

Se Power Automate restituisce l’errore “BadRequest – The required field “Client” data type is not supported” sull’azione GetTable (Excel/SharePoint), questa guida ti accompagna da diagnosi a fix, fino a best practice per prevenire nuove interruzioni degli output dinamici.

Indice

Panoramica del problema

Nel momento in cui un flusso tenta di leggere i dati da una tabella Excel o da una lista SharePoint tramite il connettore Excel Online (Business) o SharePoint, l’azione interna GetTable può fallire con un HTTP 400 BadRequest. Il messaggio tipico è:

BadRequest – The required field "Client" data type is not supported

Risultato: Power Automate non espone gli output dinamici della tabella, le azioni successive non vedono i campi attesi e l’intero flusso diventa fragile (condizioni che non si risolvono, espressioni che puntano a proprietà mancanti, ecc.).

Perché accade

Il connettore Excel/SharePoint accetta solo un sottoinsieme di tipi “piatti” (stringhe, numeri, date standard, booleani). Quando in tabella esiste una colonna che il connettore considera complessa o ambigua (ad esempio, perché è una “Person” di SharePoint o perché Excel contiene formati/valori misti), l’azione di lettura non riesce a generare uno schema coerente e va in errore.

Casi più comuni

  • Tipo non supportato: la colonna Client è un tipo complesso (Choice con etichette/ID, Person/Group, Lookup, Hyperlink, Currency con formattazioni avanzate, DateTime con fusi/locale estesa).
  • Tabella Excel “sporca”: formule volatili, celle unite, convalide, colonne parzialmente vuote, mix testo+numero nella stessa colonna, formati personalizzati che cambiano riga per riga.
  • Nomi non “puliti”: spazi doppi, caratteri Unicode, emoji, simboli, parole riservate o differenze tra header visibile e internal name.
  • Connettore/permessi: connessione obsoleta o utenza con diritti insufficienti (lettura parziale della struttura → serializzazione incompleta → 400).

Come riconoscere il problema a colpo d’occhio

  • L’azione di lettura (List rows present in a table o simili) non propone dynamic content per le colonne della tabella.
  • Nel Run History il body dell’azione è vuoto oppure si ferma su un messaggio “data type is not supported”.
  • Se inserisci una Compose subito dopo la lettura con outputs('Listrowspresentina_table')['body'], ottieni errore o payload parziale.

Soluzioni rapide (con spiegazione del perché funzionano)

PassoAzionePerché funziona
A. Verifica tipo colonnaIn SharePoint o Excel, cambia il tipo di Client in Testo (single line) o Generale. In alternativa duplica la colonna in una nuova “ClientName” solo testo e usa quella nel flusso.Forzi un tipo piatto e serializzabile che il connettore sa trattare senza inferenza ambigua.
B. Controlla intestazione della tabellaIn Excel: Formato come tabella → assegna un nome senza spazi (es. tbl_Orders). Rinomina la colonna “Client” rimuovendo spazi/caratteri speciali (es. ClientName).I nomi puliti riducono i conflitti di serializzazione e rendono stabili i riferimenti negli step successivi.
C. Rimuovi formule/formati inconsistenteConverti le formule in valori (Copia → Incolla valori) o usa una colonna d’appoggio “solo valori”.Lo schema non cambia a runtime e l’azione non deve indovinare se il campo è numero, testo o data.
D. Rigenera la connessionePower Automate → Dati > Connessioni → aggiorna o crea nuova connessione a SharePoint/Excel.Ripulisci cache di metadati: il connettore rilegge la struttura effettiva dopo le modifiche.
E. Test step-by-stepInserisci una Compose subito dopo GetTable per ispezionare l’output grezzo.Verifichi rapidamente se l’errore rientra e se il payload contiene le colonne attese.

Diagnosi guidata: individua la vera causa in 10 minuti

  1. Ispeziona lo schema: apri l’azione di lettura e usa “Peek code” (tre puntini) per vedere lo schema previsto. Se la colonna “Client” manca o è tipizzata in modo strano (array/oggetto), sei davanti a un tipo non supportato.
  2. Controlla la tabella Excel:
    • Verifica che non ci siano celle unite nella riga degli header.
    • Seleziona l’intera colonna “Client” → Dati > Testo in colonne (senza separatori) → completa la procedura per “normalizzare” i valori come testo.
    • Scorri fino in fondo: spesso gli ultimi record contengono valori fuori standard (spazi non stampabili, date come testo in alcune righe, numeri con apostrofo).
  3. Controlla la lista SharePoint (se la fonte è SP):
    • Apri le impostazioni della colonna “Client”. Se è Persona o gruppo, Lookup o Scelta con più valori, crea una nuova colonna Testo e popolala con il valore destinato all’integrazione (es. DisplayName o etichetta della scelta).
    • Evita colonne calcolate con formule complesse per l’integrazione; spostale su una colonna “di presentazione”.
  4. Rinomina in modo “API‑friendly”: sostituisci spazi con underscore, rimuovi apostrofi, slash, emoji. Esempio: Client NameClientName.
  5. Aggiorna la connessione e ripeti il run: gli output dinamici devono tornare disponibili.

Tipi supportati vs non supportati: mappa rapida

FonteTipoSupporto nel connettoreConsiglio pratico
ExcelTesto / GeneralePreferisci Generale o Testo se ci sono codici cliente con zeri iniziali.
ExcelNumero / Valuta / PercentualeDipende dal formatoEvita formati personalizzati. Se compaiono simboli, converti in testo o in numero puro.
ExcelData/OraSì (standard)Uniforma il formato (ISO 8601 consigliato lato flusso, es. yyyy-MM-dd).
SharePointSingle line of textScelta predefinita per chiavi/nomi cliente.
SharePointChoice (singola/multipla)Spesso criticoPer l’integrazione, duplica in colonna Testo con l’etichetta selezionata.
SharePointPerson/Group, LookupNo (oggetti complessi)Esponi DisplayName o un ExternalKey in colonna Testo.
SharePointHyperlink, ImageSpesso noNormalizza in testo (URL assoluto) se serve nel flusso.

Due percorsi di correzione: Excel vs SharePoint

Se la sorgente è Excel

  1. Rendi la tabella impeccabile:
    • Inserisci > Tabella o Home > Formatta come tabella.
    • Dai un nome tecnico: tbl_Clienti.
    • Header “puliti”: niente spazi iniziali/finali, niente doppi spazi, niente caratteri speciali.
  2. Normalizza la colonna Client:
    • Se contiene formule: Copia > Incolla valori.
    • Se contiene numeri e testo: decidi cosa vuoi (tutto testo è la scelta più robusta per codici cliente).
    • Rimuovi formati personalizzati (pulsante Cancella formati), poi applica “Generale”.
  3. Elimina ambiguità residue:
    • Controlla righe “sentinella” in fondo: spesso contengono note o commenti che mandano in crisi l’inferenza.
    • Evita celle vuote “a isole”: se una colonna è opzionale, lasciala vuota in modo coerente o compila con un placeholder standard.
  4. Nel flusso:
    • Usa List rows present in a table indicando File, Tabella e (se necessario) Colonne specifiche con Filter Query o Select.
    • Aggiungi una Compose subito dopo per visualizzare l’output e confermare che “Client” sia presente come stringa.

Se la sorgente è SharePoint

  1. Esponi valori semplici:
    • Se Client è Person/Group o Lookup: crea ClientName (Single line of text) e popola con il valore desiderato (DisplayName o chiave esterna).
    • Se Client è Choice: crea una colonna testo “ombra” con l’etichetta selezionata.
  2. Stabilisci naming coerente: rimuovi spazi e simboli; preferisci ClientName a Client Name.
  3. Permessi: l’utente esecutore del flusso deve avere almeno Edit sulla libreria/lista. Se l’account vede una vista con colonne nascoste o filtri particolari, può influenzare la lettura.
  4. Rigenera connessione e testa: gli output dinamici dovrebbero ripresentarsi.

Debug tattico: tecniche che fanno risparmiare tempo

  • Peek code sull’azione: conferma quali colonne sono effettivamente serializzate.
  • Compose/Parse JSON:
    • Aggiungi Compose: @{body('Listrowspresentina_table')}
    • Aggiungi Parse JSON: clicca Generate from sample, incolla un JSON di esempio dal tuo Compose. Così “sblocchi” il dynamic content per gli step successivi anche quando l’inferenza automatica è timida.
  • Test per esclusione: rimuovi temporaneamente tutte le colonne tranne “Client”; se funziona, reintroducile a blocchi per trovare la vera “colonna tossica”.
  • Convalida dei dati in Excel: disattiva regole aggressive sulle colonne lette dal flusso; reinseriscile solo a valle.

Pattern di soluzione robusti

Colonna “ombra” (Shadow Column)

Quando una colonna “bella” per l’utente è incompatibile con l’integrazione (es. Persona/Lookup), introduci una seconda colonna solo testo aggiornata alla creazione/modifica dell’elemento. Il flusso consuma la colonna “ombra”, l’utente continua a usare la colonna ricca.

Separazione tra integrazione e reporting

Usa uno sheet dedicato all’integrazione senza pivot, formattazioni condizionali o formule volatili. Il reporting vive in altri fogli, alimentati dallo sheet “clean” (con collegamenti o Power Query).

Normalizzazione lato flusso

Quando non è possibile pulire la sorgente, inserisci uno step di trasformazione subito dopo la lettura (Compose + Parse JSON) per imporre tipi prevedibili e nomi coerenti.

Checklist operativa prima del rilascio

  • Header delle colonne: alfabeti latini, numeri, underscore; niente spazi iniziali/finali.
  • Nessuna cella unita negli header o nel corpo della tabella.
  • Colonne “chiave” (Client, ID, Data): stesso tipo su tutte le righe.
  • Versioning libreria (SharePoint): non esagerare con le versioni, oppure prevedi periodiche pulizie/check‑in.
  • Connessioni Power Automate: aggiornate e collegate con un account con permessi adeguati.

Esempi di trasformazione

Da Person/Lookup a Testo

Prima (oggetto complesso):

{
  "Client": {
    "Id": 42,
    "DisplayName": "Mario Rossi",
    "Email": "mario.rossi@example.org"
  }
}

Dopo (colonna ombra ClientName):

{
  "ClientName": "Mario Rossi"
}

Da Choice a etichetta

Prima:

{
  "Client": { "Value": "Enterprise" }
}

Dopo:

{
  "Client": "Enterprise"
}

Da formula a valore statico

In Excel, copia la colonna e usa Incolla > Valori per ottenere:

Client = "ACME S.p.A."

Risoluzione completa: guida passo‑passo

  1. Duplica in ambiente di prova: copia file Excel o crea una vista SharePoint “di test”.
  2. Rendi “Client” un testo semplice: convertilo o crea “ClientName”.
  3. Rinominazioni: rimuovi spazi e caratteri speciali da tabella e colonne.
  4. Pulisci formati:
    • Excel: Home > Cancella > Cancella formati sulla colonna, applica “Generale”.
    • SharePoint: evita calcolate complesse per i campi integrati.
  5. Rigenera connessione nelle Connessioni di Power Automate.
  6. Esegui il flusso con Test e ispeziona Run History.
  7. Blocca lo schema con Parse JSON se vuoi garantire stabilità ai passi successivi.

Best practice per evitare il ritorno del 400

  1. Usa solo tipi supportati per i campi che il flusso deve leggere: Testo, Numero, Data standard, Booleano.
  2. Mantieni naming pulito per tabelle e colonne (lettere, numeri, underscore).
  3. Separa integrazione e reporting in Excel: niente pivot/condizionali/forme nella tabella consumata dal flusso.
  4. Permessi adeguati: l’account del flusso deve poter leggere/scrivere senza filtri o viste limitanti.
  5. Versioning sobrio: evita migliaia di versioni sullo stesso file Excel; esegui check‑in regolarmente o disattiva se non serve.

Strategie avanzate (se il problema persiste)

  • Proiezione selettiva: usa i parametri dell’azione (Select/Filter) per leggere solo le colonne “buone”, escludendo quelle problematiche.
  • Colonna proxy aggiornata da flusso: all’ingresso di un nuovo record, il flusso scrive/aggiorna “ClientName” con il valore serializzabile, e da quel momento legge sempre la proxy.
  • Stabilizzazione dello schema con Parse JSON: imposta uno schema esplicito e, se una riga è difettosa, gestisci l’eccezione con una Scope in Run after (per loggare senza bloccare il flusso).
  • Office Scripts (Excel): se serve, usa uno script per esportare la tabella in JSON “flat” (solo stringhe/numeri/date), che il flusso consuma poi con un’azione HTTP o connettore Excel.

Controlli di qualità prima della messa in produzione

  • Dati di frontiera: prova con valori contenenti accenti, apostrofi, spazi multipli, zeri iniziali, date al 29 febbraio.
  • Locale: verifica che separatori decimali e formato data siano coerenti con le espressioni del flusso.
  • Concorrenza: per file Excel su SharePoint/OneDrive, evita che lo stesso file sia aperto in modifica durante l’esecuzione del flusso.
  • Metriche: registra il numero di record letti e gli ID dei record scartati per facilitare auditing ed error handling.

Come presentare una richiesta di aiuto efficace

Quando chiedi supporto (ad esempio nella community di Power Automate), fornisci:

  • Screenshot dell’azione che fallisce e del messaggio 400.
  • Schema delle colonne (tipo, esempio di valore) con focus su “Client”.
  • Frammento del Run History (senza dati sensibili) o un JSON di esempio dell’output atteso.
  • Connettori coinvolti, percorso del file, nome della tabella, eventuali formule/validazioni.
  • Permessi dell’account che esegue il flusso e se la connessione è stata rigenerata.

FAQ essenziali

Posso mantenere la colonna “Client” di tipo Choice?
Sì per l’interfaccia utente, ma per l’integrazione è consigliata una colonna ombra Testo con l’etichetta della scelta. Il flusso legge la colonna ombra.

Il problema si manifesta solo alcune volte: perché?
Probabile presenza di valori “anomali” in poche righe (es. una nota o un link in fondo alla colonna) che cambiano l’inferenza del tipo. Normalizza oppure filtra fuori le righe difettose.

Rinominare le colonne rompe gli step successivi?
Se usi dynamic content basato su nomi, sì. Mitiga usando Parse JSON con schema stabile o aggiorna le espressioni dopo la rinomina.

È meglio leggere tutte le colonne e poi filtrare?
Meglio selezionare solo ciò che serve. Meno colonne, meno rischi di incontrare tipi non supportati.

Ricapitolando

Il 400 “data type is not supported” sull’azione GetTable nasce quasi sempre da un mismatch di tipo o da una tabella non normalizzata. Con i passi A–E (tipo → header → formati → connessione → test) la maggior parte dei casi si risolve senza dover riscrivere il flusso. Progetta colonne “flat”, nomi puliti e separa l’integrazione dal reporting: così gli output dinamici restano stabili e i tuoi flussi diventano prevedibili e manutenzionabili.

Dove ottenere ulteriore assistenza

Poiché si tratta di un flusso personalizzato, i forum generici Microsoft 365 spesso non sono sufficienti. Condividi nella community di Power Automate una descrizione chiara del problema con screenshot, versione dei connettori, schema delle colonne e Run History; allega, se possibile, un foglio di esempio privo di dati sensibili. Queste informazioni permettono a MVP e membri del team di prodotto di riprodurre e risolvere rapidamente il caso.


Appendice: checklist flash

  • Client è Testo puro? In caso contrario, crea ClientName testo.
  • La tabella ha un nome senza spazi (tbl_…) e header “puliti”?
  • Ci sono formule o formati misti nella colonna? Converti in valori.
  • Hai rigenerato le connessioni e ri‑testato?
  • Hai verificato permessi e versioning della libreria?

Seguendo questa guida puoi eliminare alla radice l’errore BadRequest – The required field “Client” data type is not supported, ripristinando il corretto funzionamento di GetTable e la disponibilità dei contenuti dinamici nelle azioni successive del tuo flusso.

Tip finale: una volta stabilizzato lo schema, aggiungi un controllo all’inizio del flusso che verifichi la presenza delle colonne critiche e invii un avviso se sono state rinominate o eliminate: è un investimento minimo che previene molte rotture in futuro.


Informazioni di supporto operativo

  • Ambiente: elenca tenant, area (se rilevante), tipo di licenza.
  • Connettori: Excel Online (Business), SharePoint – versioni e stato connessione.
  • File: percorso, nome tabella, dimensione, presenza di pivot/validazioni.
  • Lista: tipi colonne, viste, colonne calcolate, indicizzazione.
  • Flusso: ID run fallito, timestamp, error message completo, prime 5 righe di esempio (anonimizzate).

Con questa dotazione di informazioni, anche i casi più ostinati vengono risolti con tempi molto contenuti, senza rifare l’architettura del flusso.


Conclusione

Il segreto è progettare pensando al connettore: tipi piatti, nomi puliti, tabelle pulite. Una volta messo in sicurezza “Client” e allineato lo schema, l’azione GetTable torna a funzionare e Power Automate recupera gli output dinamici che servono per orchestrare con affidabilità i passaggi successivi del processo.

Indice