循环脚本文件亲爱的 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