Custom widget : détecter les colonnes ayant une formule ou formule d'initialisation / isFormula

Pour info, si vous développez un custom widget, lors de l’interrogation des métadonnées de colonne via grist.docApi.fetchTable('_grist_Tables_column'), une colonne vide sans formule renverra

isFormula= true
et
formula = ""

Ce qui peut être surprenant.

Voici une table pour récapituler ce que renvoient les clés isFormula et formula dans différents cas de figure :

État de la colonne isFormula formula
Colonne vide true ""
Colonne de données false ""
Formule d’initialisation false "..."
Formule true "..."

Pour distinguer entre :

  • Les colonnes de données classiques (modifiables par l’utilisateur)
  • Les colonnes de formule (en lecture seule, calculées)

il faudra donc faire 2 vérifications :

const isFormulaColumn = isFormula && formula?.length > 0;

Explication de Dmitry de GristLabs : Une colonne vide constitue un état particulier. Elle peut être de type Any (ce qu’une colonne de données ne peut pas être), mais accepte l’écriture de données, ce qui entraîne sa conversion automatique vers un type spécifique en fonction de ces données. En interne, elle est représentée précisément par isFormula == True et formula == "".

cf https://github.com/gristlabs/grist-core/issues/2060