문제
외부 프로그램에서 파일을 열어야 하는 경우 일반적으로 JSL Open() 함수가 작동합니다. 그러나 JMP가 가져오는 방법을 알고 있는 파일 형식을 열려고 하면 외부 프로그램에서 열지 않고 가져온 파일로 끝날 것입니다. Excel 파일을 여는 것이 이에 대한 일반적인 사용 사례입니다.
해결책
이를 위해 JSL RunProgram() 함수를 사용할 수 있습니다. Windows에서는 프로그램이 닫힐 때까지 JMP가 정지되지 않고 JMP가 닫히기 전에 프로세스가 닫히지 않도록 특별한 처리가 필요합니다.
/* Function: openFileInOSDefault
Open file in the operating system default program
Arguments:
filepath - local path file
*/
openFileInOSDefault = Function({filepath},
If( Host is( "Windows" ),
Run Program(
Executable( "PowerShell.exe" ),
Options(
Eval Insert( "\[-Command "& {Start-Process '^filepath^'}"]\" )
),
Read function( "text" )
);
,
RunProgram(
Executable( "/usr/bin/open" ),
Options( filepath ),
ReadFunction( "text" )
)
);
);
논의
일반적으로 이것이 정확히 어떻게 작동하는지 이해할 필요가 없다고 생각하며 이것을 스크립트에 연결하고 열려는 파일의 경로로 호출할 수 있습니다.