循環腳本文件親愛的 jsl 腳本編寫者,
我有一個腳本,在其中我使用 include 指令調用“報告”的下標(將 JMP 圖表插入到 powerpoint 文件中):
dt = Current Data Table();
Include( strRootPathScript || str_report_Product1) );
只要我使用 1 種產品,它就可以正常工作。 我的願望是循環產品列表 [Product1;Product2;...]
並將產品名稱替換為包含指令。
在圍繞 EVAL/EXPR/SUBSTITUTE 指令進行了一些奇異的試驗之後,我請求您的幫助!
謝謝!!!
杰羅姆
腳本編寫回复:循環腳本文件你好@J_Bonnouvrier1 ,
將其概括為在任何情況下都可以工作有點困難,但是您可以在給定代碼/文件結構的情況下循環遍歷它,就像我想像的那樣。
假設您事先知道替換 Product1、Product2 等 在您的 JSL 代碼中,如果您執行以下操作:
dt = Current Data Table();
For(i=1, i<=NItems(Product_List), i++,
Include(strRootPathScript||"str_report_"||Product_List[i]);
);
在這種情況下,變量 Product_List 將是您的產品列表:Product_List={"Product1", "Product2", "Product3",...};。 在 For 循環中,當它調用 Product_List[i] 時,它將連接 Product_List 的第 i 個元素。 因此,如果 i = 3,它應該執行以下操作:
Include(strRootPathScript||str_report_||Product_List[3]) ,其中我假設 strRootPathScript 是某個根路徑,例如“C:\myfiles\JSL_code\”,以便您提供給 Include 函數的參數將在這種情況是:“C:\myfiles\JSL_code\str_report_Product3”。
這就是你所追求的嗎?
希望這可以幫助!,
DS
回复:循環腳本文件你好@SDF1 ,
實際上我忘了提到 str_report_Product1 是一個變量,給出了每個產品的文件名:
str_report_Product1 = "C:\temp\report_Product1.jsl"
因此,腳本無法識別您提出的解決方案。
謝謝並恭祝安康,
熱羅姆
Re: 循環腳本文件你好@J_Bonnouvrier1 ,
在這種情況下,您需要做的就是確保正確定義了您的目錄路徑(包括最後一個反斜杠),並且您需要連接“.jsl”結尾以確保事情按預期工作。
例如,我創建了三個 Product JSL 文件,每個文件都有以下命令,但只是將數字從 1 更改為 2,然後是 3:
Names Default to Here (1);
Print("This is Product 1 JSL script");主要的JSL文件如下:
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");
);運行上述主要代碼的輸出是:
“這是主要腳本”
“這是產品 1 JSL 腳本”
“這是產品 2 JSL 腳本”
“這是產品 3 JSL 腳本”
如果您將“.jsl”作為產品列表的一部分,它也會起作用,例如: Product_List={"Product1.jsl", "Product2.jsl",...};然後你會從 For 循環中刪除 ||".jsl" 連接。 無論哪種方式,您都會得到與上面相同的輸出。 這僅取決於您要如何定義 Product_List 列表。
希望這可以幫助!,
DS