循環腳本文件親愛的 jsl 腳本編寫者,
我有一個腳本,其中使用 include 指令調用下標進行“報告”(將 JMP 圖表插入到 powerpoint 文件中):
dt = Current Data Table();
Include( strRootPathScript || str_report_Product1) );
只要我使用 1 個產品,它就可以正常工作。 我的願望是循環產品列表 [Product1;Product2;...]
並將產品名稱替換為包含指令。
在圍繞 EVAL/EXPR/SUBSTITUTE 指令進行一些奇異的嘗試之後,我請求您的幫助!
謝謝!!!
杰羅姆
自動化和腳本編寫內容組織回复:循環腳本文件你好@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
回复:循環腳本文件你好@SDF1 ,
實際上我忘了提及 str_report_Product1 是一個變量,給出每個產品的文件名:
str_report_Product1 = "C:\temp\report_Product1.jsl"
因此,腳本無法識別您提出的解決方案。
感謝致敬,
熱羅姆
回复:循環腳本文件你好@J_Bonnouvrier1 ,
將其推廣到在任何情況下都可以工作有點困難,但是您可以根據我想像的給定代碼/文件結構來循環它。
假設您事先知道 JSL 代碼中的替代品 Product1、Product2 等,如果您執行以下操作:
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