Hallo, ich erstelle ein Dashboard mit mehreren Registerkarten basierend auf dem Skript im folgenden Entdeckungsvortrag: https://community.jmp.com/t5/Discovery-Summit-Americas-2021/One-Multi-tabbed-Filterable-Dashboard-2021-US-30MP-803/ta-p/398667
Das zum Kombinieren mehrerer Dashboards verwendete Skript ist das folgende:
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;
);
Im Gegensatz zum Discovery Talk basieren meine Dashboards jedoch auf unterschiedlichen Datentabellen und nicht auf einer einzigen Datentabelle.
Ich habe alle Datentabellen und Dashboards geöffnet und führe das obige Skript aus, um alle Dashboards in einem Dashboard mit mehreren Registerkarten zusammenzufassen. Dies ergibt die folgende Fehlermeldung:

Es sieht so aus, als ob die lokalen Datenfilter nicht aus meinen Dashboards extrahiert werden können. Gibt es einen Vorschlag, wie ich das generische Skript ändern kann, um alle geöffneten Dashboards kombinieren zu können?
Oder vielleicht andere Lösungen, um mehrere offene Dashboards zu einem Dashboard mit mehreren Registerkarten zusammenzufassen?
AKTUALISIEREN:
Die obige Fehlermeldung hat nichts damit zu tun, dass die Datenquelle aus mehreren Tabellen besteht. Wenn andererseits der Name einer der Datentabellen einen Bindestrich (-) enthält, funktioniert CombineDashboards.jsl nicht. Das Entfernen des Bindestrichs aus dem Namen löst das Problem.