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