Bonjour, je crée un tableau de bord à plusieurs onglets basé sur le script donné dans l'exposé de découverte suivant : https://community.jmp.com/t5/Discovery-Summit-Americas-2021/One-Multi-tabbed-Filterable-Dashboard-2021-US-30MP-803/ta-p/398667
Le script utilisé pour combiner plusieurs tableaux de bord est le suivant :
dashes = Find All(Reports);
tb = Expr(Tab Box());
For(i = 1, i<= N Items(dashes), i ++,
tabPage = Expr(Tab Page Box());
dfcb = Expr(Data Filter Context Box());
lub = Expr(Line Up Box(N Col(2)));
hlb = Expr(H List Box());
//Get Data table name to use with the data filter
wintitle = dashes[i] << Get Window Title;
wordone = Word(1, wintitle, "-");
wordtwo = Word(2, wintitle, "-");
dtname = Substr(wordone, 1, Length(wordone)-1 );
dt = Eval Expr(Data Table(Expr(dtName)));
//Get dashboard name
dashName = Substr(wordtwo, 2);
failed = 0;
j = 1;
//Loop through the tab page boxes in the dashboard, and extract the scripts
While(failed ==0,
Try(tpb = dashes[i] << Find(TabPageBox(j)),
failed = 1; Continue();
);
//Try to get the script from the display box if it exisits
Try(obj = tpb << Get Scriptable Object;
script = obj << Get Script,
j ++; Continue();
);
//If the script is for the local data filter add the script to the H List Box
If(Char(Head(Name Expr(script))) == "Data Filter",
FilterExprStr = char(NameExpr(dt)) || " << " || char(Name Expr(script));
FilterExpr = Parse(FilterExprStr);
Insert Into(hlb,NameExpr(FilterExpr));
,
//Else add it to the lineup box
If( Char(Name Expr(script)) != "Scriptable[]",
reportExprStr = char(NameExpr(dt)) || " << " || char(Name Expr(script));
reportExpr = Parse(reportExprStr);
scrollbox = Expr(Scroll Box());
Insert Into(scrollbox, Name Expr(reportExpr));
Insert Into(lub,Name Expr(scrollbox));
);
);
j ++;
);
//Build up the display boxes
Insert Into(hlb, Name Expr(lub));
Insert Into(dfcb, Name Expr(hlb));
Insert Into(tabPage, Eval Expr(Title(Expr(dashName))), 1);
Insert Into(tabPage, Name Expr(dfcb), 2);
Insert Into(tb, Name Expr(tabPage));
);
//Create combined dashboard window
New Window("Ac-225 trending tool, v0.1", tb);
//Close all the individual dash reports
For( w = 1, w <= N Items(dashes), w ++,
dashes[w] << Close Window;
);
Cependant, contrairement au discours de découverte, mes tableaux de bord sont basés sur différentes tables de données, et non sur une seule table de données.
Toutes les tables de données et tous les tableaux de bord sont ouverts et j'exécute le script ci-dessus pour combiner tous les tableaux de bord en un seul tableau de bord à plusieurs onglets. Cela donne le message d'erreur suivant :

Il semble qu'il ne soit pas en mesure d'extraire les filtres de données locaux de mes tableaux de bord. Une suggestion sur la façon dont je peux modifier le script générique pour pouvoir combiner tous les tableaux de bord ouverts ?
Ou peut-être d'autres solutions pour combiner plusieurs tableaux de bord ouverts dans un tableau de bord à plusieurs onglets ?
MISE À JOUR:
Le message d'erreur ci-dessus n'a rien à voir avec le fait que la source de données est constituée de plusieurs tables. En revanche, si le nom d'une des tables de données contient un trait d'union (-), le CombineDashboards.jsl ne fonctionnera pas. La suppression du trait d'union du nom résout le problème.