Schleife für SkriptdateienLiebe JSL-Skripter,
Ich habe ein Skript, in dem ich die Anweisung „include“ verwende, um ein Subskript für „Reporting“ (Einfügen eines JMP-Diagramms in eine Powerpoint-Datei) aufzurufen:
dt = Current Data Table();
Include( strRootPathScript || str_report_Product1) );
Es funktioniert gut, solange ich 1 Produkt verwende. Mein Wunsch ist es, eine Liste von Produkten zu durchlaufen [Produkt1;Produkt2;...]
und den Produktnamen in die Include-Anweisung zu ersetzen.
Nach einigen exotischen Versuchen rund um die EVAL/EXPR/SUBSTITUTE-Anweisungen flehe ich um Ihre Hilfe an!
Danke!!!
Hieronymus
Automatisierung und SkripterstellungInhaltsorganisationBetreff: Schleife bei SkriptdateienHallo @J_Bonnouvrier1 ,
In diesem Fall müssen Sie lediglich sicherstellen, dass Ihr Verzeichnispfad korrekt definiert ist (einschließlich des letzten Backslashs) und dass Sie die Endung „.jsl“ verketten müssen, um sicherzustellen, dass alles wie erwartet funktioniert.
Als Beispiel habe ich drei Produkt-JSL-Dateien erstellt, jede mit den folgenden Befehlen, aber ich habe nur die Zahlen von 1 auf 2 und dann auf 3 geändert:
Names Default to Here (1);
Print("This is Product 1 JSL script");Die Haupt-JSL-Datei lautet wie folgt:
Names Default to Here (1);
Product_List={"Product1", "Product2", "Product3"};
ScriptDir = "C:\temp\"; //Or whatever your path is.
Print("This is the main script");
For(i=1, i<=NItems(Product_List), i++,
Include(ScriptDir||Product_List[i]||".jsl");
);Die Ausgabe des obigen Hauptcodes ist:
„Das ist das Hauptskript“
„Dies ist das JSL-Skript für Produkt 1“
„Dies ist das JSL-Skript für Produkt 2“
„Dies ist das JSL-Skript für Produkt 3“
Es funktioniert auch, wenn Sie „.jsl“ als Teil der Produktliste haben, wie zum Beispiel: Product_List={"Product1.jsl", "Product2.jsl",...}; und dann würden Sie die Verkettung ||".jsl" aus der For-Schleife entfernen. In beiden Fällen erhalten Sie die gleiche Ausgabe wie oben. Es hängt nur davon ab, wie Sie die Product_List-Liste definieren möchten.
Hoffe das hilft!,
DS
Betreff: Schleife bei SkriptdateienHallo @SDF1 ,
Eigentlich habe ich vergessen zu erwähnen, dass str_report_Product1 eine Variable ist, die den Namen der Datei für jedes Produkt angibt:
str_report_Product1 = "C:\temp\report_Product1.jsl"
Daher wird die von Ihnen vorgeschlagene Lösung vom Skript nicht erkannt.
Danke und Grüße,
Jérôme
Betreff: Schleife bei SkriptdateienHallo @J_Bonnouvrier1 ,
Es ist ein wenig schwierig, dies so zu verallgemeinern, dass es unter allen Umständen funktioniert, aber Sie könnten es bei einer Code-/Dateistruktur, wie ich sie mir vorstelle, in einer Schleife durchlaufen.
Vorausgesetzt, Sie kennen die Ersetzungen Produkt1, Produkt2 usw. in Ihrem JSL-Code, wenn Sie Folgendes tun:
dt = Current Data Table();
For(i=1, i<=NItems(Product_List), i++,
Include(strRootPathScript||"str_report_"||Product_List[i]);
);
In diesem Fall wäre die Variable Product_List eine Liste Ihrer Produkte: Product_List={"Product1", "Product2", "Product3",...};. Wenn in der For-Schleife Product_List[i] aufgerufen wird, wird das i-te Element von Product_List verkettet. Wenn also i = 3, sollte es Folgendes tun:
Include(strRootPathScript||str_report_||Product_List[3]) , wobei ich davon ausgehe, dass strRootPathScript ein Stammpfad ist, wie „C:\myfiles\JSL_code\“, sodass das Argument, das Sie in die Include-Funktion einspeisen, darin enthalten wäre in diesem Fall: „C:\myfiles\JSL_code\str_report_Product3“.
Ist das genau das, wonach Sie suchen?
Hoffe das hilft!,
DS