来自用户的变量值 - sql 查询我尝试从用户那里获取变量值并将其用作 SQL 查询
如何添加到查询?
谢谢!

Re: 来自用户的变量值 - sql 查询大家好,
@gzmorgan0 , 非常感谢您的解决方案,效果很好!
@uday_guntupalli @stan_koprowski @Jeff_Perkinson ,谢谢大家的支持!
Re: 来自用户的变量值 - sql 查询@Botzal ,请在 JMP 脚本索引 >> 函数中搜索 Open Database()。 此函数有 2 个必需参数和 2 个选项参数:
- 连接字符串
- 查询字符串
- <隐形|输出表的 private> 属性,你可能不想要这个
- <输出表名>
您一直在为前两个参数使用一个字符串。当我们没有要使用的测试文件时,很难调试和看到这一点。 删除 dt_ScadaData 的注释行以测试它是否运行。 如果您希望 UI 自动关闭,请删除 NW 的注释行。 您可能希望它保持打开状态,以便您可以拉出几张桌子。 如果那是你想要的,那么评估插入到(qstr ),替换占位符变量 foo[1] 和 foo[2]。因此,如果您打算多次使用 UI,我创建了一个变量 cq_str,它被分配了变量字符串。 所以这应该有效。我通常不使用 Eval Insert Into() 而是使用类似 cq_str = Eval Insert(q_str);
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
q_connect = "DRIVER=SQL Server;SERVER=MyServer;Trusted_Connection=Yes";
q_str = "DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria=
'<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data";
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
cq_str = q_str;
Show(cq_str);
Eval Insert Into(cq_str);
Show(cq_str);
//dt_ScadaData = Open Database(q_connect, cq_str); //this is the runit command
//NW << Close Window(); //this will close the UI don't use if you want to keep ist open
) //end ButtonBox
); //end VListBox
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>
Re: 来自用户的变量值 - sql 查询@uday_guntupalli ,
我发布的是日志 - 见下文

日志——
foo = {"p123", "v123"};
//:*/
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str ="DRIVER=SQL Server;SERVER=My Server(I changed);Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -1, CAST(GETDATE() AS varchar(11))) -- 17 Days Back
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data";
Show(q_str);
q_str = Eval Insert INTO(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);
/*:</SCADAPORTAL>你确定我“用引号外的分隔符定义字符串”?请您标记分隔符并告诉我您的意思。
* 问题是当我运行脚本并将值插入到面板盒而不是我按下按钮框(“确定”..),我没有收到任何数据。
谢谢。
Re: 来自用户的变量值 - sql 查询@Botzal ,
你还没有粘贴日志。 如果您在 JMP 主窗口上按 Ctrl + Shift + L,则会打开一个日志窗口。 或者,在您的脚本编辑器上,右键单击并选择“显示嵌入式日志”,如此处所示,然后再运行您的脚本:

此外,您再次使用引号外的分隔符定义字符串。 请参考我之前提供的更正并粘贴日志。 如果您无法粘贴日志,我将无法提供任何进一步的指导
Re: 来自用户的变量值 - sql 查询@uday_guntupalli感谢您的解决方案。
我试图采纳你的建议,但没有奏效。 
1. 查询有效 - 当我在脚本中插入数字和不要来自用户的变量. 例如 - 我插入 p123 而不是 foo[1],而不是 oo[2],我插入 v123。
dt_ScadaData = Open Database("DRIVER=SQL Server;SERVER=My Server ;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -1, CAST(GETDATE() AS varchar(11))) -- 17 Days Back
DECLARE @EndDateTime datetime = DATEADD(day,1, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"p123\!"" value="\!"v123\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data");</SCADAPORTAL>2. 日志——
foo = {"P123", "V123"};
//:*/
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str ="DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -1, CAST(GETDATE() AS varchar(11))) -- 17 Days Back
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data";
Show(q_str);
q_str = Eval Insert INTO(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);
/*:</SCADAPORTAL>3. 如果我理解正确的话,你能看到我在第 2 章中应用你的建议的脚本吗?
Re: 来自用户的变量值 - sql 查询@Botzal ,
您需要查看我们已经给您的建议并尝试遵循它。 请帮助我们帮助您。 当您说它不起作用时,我们不知道或看不到发生了什么。 如果您能清楚地说明您所说的内容以及您认为它不起作用的原因,这将有助于我们进行故障排除。
1.您是否验证了查询本身是否有效?
2. 请粘贴日志
3. 你没有像我之前展示的那样评估字符串。 请在构造字符串后通过调用它来评估字符串。
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
q_str; // evaluating the query you constructed
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>
Re: 来自用户的变量值 - sql 查询你好@uday_guntupalli ,
该脚本@gzmorgan0发送给我,不起作用 - 请参阅下面的 JSL
当然,我将服务器替换为我的服务器。
请帮助修复脚本。
谢谢。
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>
Re: 来自用户的变量值 - sql 查询你好@uday_guntupalli ,
该脚本@gzmorgan0发送给我,不起作用 - 请参阅下面的 JSL
当然,我将服务器替换为我的服务器。
请帮助修复脚本。
谢谢。
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>Re: 来自用户的变量值 - sql 查询你好@Botzal ,
您正在运行什么版本的 SQL Server?
您的 SQL Server 评估副本似乎已过期。
你能验证你的 SQL Server 没有在评估模式下运行吗?
谢谢,
斯坦
Re: 来自用户的变量值 - sql 查询请张贴您的日志。 该脚本没有运行查询,它只是将查询命令的结果写入日志。
您使用的是哪个版本的 JMP?JMP 有一个查询生成器。您可以创建该查询来提示您需要的两个字段。 然后您可以保存脚本或查询。一个查询有多个失败点,
- 查询语法不正确,请注意大小写可能很重要。因此,如果用户正在输入 harry,但 db 字段为 HARRY,则结果将为空。SQL 还用空格或特殊字符为值加上引号。 所以第一的,让脚本在没有提示的情况下工作,即对提示的值进行硬编码并运行代码部分 dtScadaData = Open Database(etc.)
- 硬编码脚本工作后,请尝试在提示符下准确输入上面硬编码的内容。同时打印出字符串和 compare.mple,
- 查询登录可能是一个失败点
- 您到 db 驱动程序的连接字符串可能与其他用户不同。例如,我将 Excel 的驱动程序设置为 Excel Files,其他人可能有不同的名称。
- 其他用户权限可能与您的不同,他们可能无权访问文件/表。
- 我相信还有更多,
我看到@uday_guntupalli刚刚回应。 所以我现在就停下来。
Re: 来自用户的变量值 - sql 查询@Botzal ,
当你说它不起作用时,你能解释一下你所看到的吗?@gzmorgan0抓住我的错是正确的,我应该使用 Eval Insert Into 而不是 Eval Insert :

另外,您是否要替换上面显示的字符串中的服务器名称?
此外,到目前为止,您只是在构建字符串,您需要在构建字符串后实际运行该字符串,以从 Scripting Index 中查看如下示例所示的结果:
ex = "Today is ^As Date( Today())^";
Eval Insert Into( ex );
ex;
Re: 来自用户的变量值 - sql 查询它仍然不起作用:(
Re: 来自用户的变量值 - sql 查询我认为您需要更改代码q_str = 评估插入(q_str)或者评估插入(q_str) . Eval Insert Into() 改变其参数的值,它必须是像 q_str 这样的存储值; Eval Insert() 只返回一个字符串,它不会改变它的参数。
Show(q_str);
q_str = Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);Re: 来自用户的变量值 - sql 查询@uday_guntupalli
你好,
感谢您的解决方案和解释。
我尝试运行脚本并将数据插入到框面板中。 当我尝试按 OK 按钮时,没有任何反应。
请看下面的日志
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=My Server;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>Re: 来自用户的变量值 - sql 查询@Botzal ,
我认为你遇到错误的原因是你的字符串有逗号和其他分隔符。 我重写了您的脚本,并在下面提供:
LB = Lineup Box(1);
LB << Append(
PB_Inputs = Panel Box("User Inputs",
a = Text Edit Box( "" ), //foo[1]
b = Text Edit Box( "" ), // foo[2]
);
);
MyUI = V List Box(LB,
BB_UserInputUnload = Button Box("Ok",
foo = Eval List( {a << get text, b << get text} );
Show( foo );
q_str = "DRIVER=SQL Server;SERVER=MyServer;Trusted_Connection=Yes,
DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime
Scada Data" ;
Show(q_str);
Eval Insert(q_str);
Show(q_str);
),
);
NW = New Window("User Input Collection Window",
VLB = V List Box();
);
VLB << Append(MyUI);</SCADAPORTAL>另外,有几点建议:
1、在搭建展示盒的时候,把它们分开,独立搭建
2. 当使用像 Eval 这样的语句时,总是单独定义你的字符串或语句,它将帮助你隔离错误并查看哪一行代码引入了错误
希望这可以帮助。
Re: 来自用户的变量值 - sql 查询@gzmorgan0
@uday_guntupalli
@Jeff_Perkinson
这是日志——
foo = {"DS", "FD"};
Name Unresolved: erver in access or evaluation of 'erver' , erver
//:*/
Names default to here(1);
uservalue = New Window("Insert Data",
a = Text Edit Box(""), //foo[1]
b = Text Edit Box(""), //foo[2]
Button Box("OK",
foo = Eval List({ a << get text, b << get text});
show(foo);
q_str = EvalInsert("DRIVER=SQL Server;SERVER=-----;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data");
show(q_str);
wait(0);
uservalue << close window();
)
);
/*:
DisplayBox[]</SCADAPORTAL>
Re: 来自用户的变量值 - sql 查询@gzmorgan0
@uday_guntupalli
@Jeff_Perkinson
大家好,
感谢您的解决方案!
脚本仍然不起作用:(
当我尝试插入参数时,它会显示以下消息 - “名称未解析: erver 正在访问或评估 'erver' , erver”
虽然我使用以下命令运行脚本 -名称默认为此处(1);
Names default to here(1);
uservalue = New Window("Insert Data",
a = Text Edit Box(""), //foo[1]
b = Text Edit Box(""), //foo[2]
Button Box("OK",
foo = Eval List({ a << get text, b << get text});
show(foo);
q_str = EvalInsert("DRIVER=SQL Server;SERVER= ----;Trusted_Connection=Yes",
"DECLARE @StartDateTime datetime = DATEADD(day, -2, CAST(GETDATE() AS varchar(11)))
DECLARE @EndDateTime datetime = DATEADD(day,0, GETDATE())
EXEC ListData @Criteria='
<SCADAPORTAL>
<DATA name="\!"PointData\!"" format="\!"Wide\!"" interval="\!"60m\!"">
<WHERE>
<COLUMN name="\!"Point\!"" project="\!"^foo[1]^\!"" value="\!"^foo[2]^\!"/">
</COLUMN>
</WHERE>
</DATA>'
, @StartDateTime=@StartDateTime
, @EndDateTime=@EndDateTime","Scada Data");
show(q_str);
wait(0);
uservalue << close window();
)
);</SCADAPORTAL>
Re: 来自用户的变量值 - sql 查询下面的脚本有 2 个部分:一个模态对话框和一个非模态对话框。
Names default to here(1);
//Modal method
foo = New Window("Insert Data", <<MODAL></MODAL>
'
etc. ");
Show(q_str);
//uncomment the line below after you have tested the string is correct
//dt_ScadaData = Open Database("DRIVER=SQL Server; SERVER=....", q_str);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Non-Modal Method
//--- Show commands are written to teh LOG not the embedded log
uservalue = New Window("Insert Data",
a = Text Edit Box(""), //foo[1]
b = Text Edit Box(""), //foo[2]
Button Box("OK",
foo = Eval List({ a << get text, b << get text});
show(foo);
q_str = EvalInsert("DECLARE
@StartDateTime datetime = DATEADD( etc.
'
etc. ");
show(q_str);
wait(0);
uservalue << close window();
)//end ButtonBox
); //end New Window
这是日志中写的结果,我输入了 cat andchick,然后是 bull and cow。

Re: 来自用户的变量值 - sql 查询@Botzal ,用户值窗口是非模态的。 因此,新窗口下方的 JSL 会在用户有机会选择按钮之前尝试运行。
您知道如何制作对话框模式,或者如何将查询作为 OK 按钮的一部分运行吗?
Re: 来自用户的变量值 - sql 查询@Botzal ,
如果可能,请使用此处显示的“JSL”块和日志快照发布您尝试过的内容,这样社区中的用户可以尝试了解哪些内容不适合您。
Re: 来自用户的变量值 - sql 查询@Jeff_Perkinson
@Jeff_Perkinson写道:
@uday_guntupalli的建议代替()是一个很好的。
您可能想熟悉的另一个功能是评估插入() . 它可以将变量值插入文本字符串.
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);这是该代码的日志:
/*:
//:*/
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);
/*:
"The correct answer is: a"
感谢您的解决方案。
对不起,我正在尝试,但它不起作用。
请问,你能给我解释一下吗?
Re: 来自用户的变量值 - sql 查询@uday_guntupalli的建议代替()是一个很好的。
您可能想熟悉的另一个功能是评估插入() . 它可以将变量值插入文本字符串.
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);
这是该代码的日志:
/*:
//:*/
myvar="a";
response=eval insert("The correct answer is: ^myvar^");
print(response);
/*:
"The correct answer is: a"Re: 来自用户的变量值 - sql 查询@Botzal ,
实现您想要的一种方法是使用 Substitiute()。 例如
WhereStatement = " WHERE [ReadTime] >= DateTimeStart and [ReadTime] <= DateTimeEnd ";
WhereStatement = Substitute(WhereStatement, "DateTimeStart", "'" || MyStartTime ||"'", "DateTimeEnd", "'" || MyEndTime||"'");
在上面显示的示例中,查询中的 DateTimeStart 和 DateTimeEnd 将使用基于用户输入的 MyStartTime 和 MyEndTime 替换。
同样,在您的情况下,您可以先将 SqlQuery 初始化为单独的字符串,然后使用 Substitute() 替换您想要的字符串。 一旦你这样做并得到你想要的查询,然后从数据库中查询。 让我知道这是否有帮助。 对未来的小建议是,请使用“JSL”块发布 JSL,以便人们可以轻松地使用您发布的脚本来提供示例