23/03/23 23:24:59.63 IR5kOyOp0.net
こんな??知らんけど
open x-apple.systempreferences:com.apple.preference.security
1040:sage
23/03/24 09:48:22.00 tp6ybqm30.net
次のAppleScript(1)に対応するJavaScriptの書き方をご教示いただけますか?
(1) set test1 to do shell script "
test2=$(/bin/ls /Users/john/*.json)
echo $test2
"
log (test1)
自分で書いたJavaScript(2)ではスクリプトエラー(3)が表示されます。
�
1041:スだこのエラーの中には*.jsonに一致するファイル名が含まれているので /bin/ls /Users/john/*.jsonは途中まで成功しているようです。 (2)app = Application.currentApplication(); app.includeStandardAdditions = true; var exec = ` " test2=$(/bin/ls /Users/john/*.json) echo $test2 " ` var resultX = app.doShellScript(exec) console.log(resultX); (3) スクリプトエラー Error: Error: sh: line 4: test2=/Users/john/01.json /Users/john/03.json echo : No such file or directory
1042:名称未設定
23/03/24 10:22:38.24 G8ouTVCw0.net
(2)からダブルクウォーツ取っ払えばいけたぽいけど
1043:sage
23/03/24 10:43:07.07 tp6ybqm30.net
素早いご助言を感謝です。ダブルクウォーツを削除した結果
エラー表示が消えました。ただ「帰り値を表示する」console.log(resultX);
での結果が、undefinedとなります。
console.log(resultX)を削除して、(4)を実行すると、ScriptEditorの「結果」の欄に
*.jsonファイル名が正しく表示できます。ここで表示されているリストをresultXに
入れる方法がございますでしょうか?
(4) app = Application.currentApplication();
app.includeStandardAdditions = true;
var exec = `
test2=$(ls /Users/john/*.json)
echo $test2
`
resultX = app.doShellScript(exec);
1044:名称未設定
23/03/24 10:56:15.68 5GAFP4Gj0.net
resultXには代入されているが文字列としてだね
「返された値」を表示すれば出てくるよ
1045:名称未設定
23/03/24 11:01:18.81 G8ouTVCw0.net
結果は入ってるじゃん
1046:名称未設定
23/03/24 11:06:51.34 5GAFP4Gj0.net
ゴメンよく読んでなかった。すでに表示してるんだね。
undefinedはresultXへの代入結果でしょ
最後にresultX入れとけば表示されるよ
1047:sage
23/03/24 11:38:00.15 tp6ybqm30.net
>>989
>最後にresultX入れとけば表示されるよ
ありがとうございます。うまくいきました。
デバッグ作業で変数などの値を確認するために、console.log(変数)で確認して
きましたが、
console.log(resultX)だとundefinedになるのは、何か特別な「仕様」なのでしょうか?
1048:名称未設定
23/03/24 12:26:23.67 5GAFP4Gj0.net
>>989
>undefinedはあくまで最後の式の実行結果でしょ。
結果を返さないからundefined
console.logの表示内容は「返された値」に表示されている。
1049:名称未設定
23/03/24 12:26:44.94 5GAFP4Gj0.net
アンカ間違えて>990ね
1050:sage
23/03/24 15:56:27.67 tp6ybqm30.net
>>991
>console.logの表示内容は「返された値」に表示されている。
丁寧なご説明を本当にありまとうございます。
「結果」の欄と「メッセージ」の欄を混乱してました。
「最後にresultX入れとけば表示される」のは「結果」の
欄で、それとほぼ同じ内容がconsole.log(resultX)とすると
「メッセージ」の欄に表示されるため、作業している
途中で頭が混乱してしまいました。
1051:名称未設定
23/03/25 02:05:22.65 eef2YPir0.net
>>984
ChatGPT さんにその質問を投げてみた
ワイにはちんぷんだがこれ合ってんの?
↓
次のJavaScriptコードは、AppleScriptで提供されたコードと同じ機能を提供します。
const { execSync } = require('child_process');
const test2 = execSync('/bin/ls /Users/john/*.json').toString().trim();
console.log(test2);
このJavaScriptコードは、Node.jsの標準ライブラリであるchild_processを使用して、ターミナルからコマンドを実行しています。execSync()メソッドは、指定されたコマンドを同期的に実行し、その出力を返します。これにより、test2変数に/Users/johnディレクトリにある.jsonファイルのリストが格納されます。
そして、console.log()メソッドを使用してtest2変数の値をログに出力しています。注意してください、JavaScriptの場合、 console.log()のみログに出力することができ、変数を直接ログに出力することはできません。
1052:名称未設定
23/03/25 06:44:11.86 9wC9X/Dv0.net
AppleScript アップルスクリプト 質問、発表 8
スレリンク(mac板)
1053:名称未設定
23/03/25 08:54:40.59 zyuo/Yd90.net
>>994
それもうAppleScriptもJXAも関係ないだろ
なんでも持ち込むな
1054:名称未設定
23/03/25 13:35:07.93 jgAiznrY0.net
うめ
1055:名称未設定
23/03/25 13:37:33.81 jgAiznrY0.net
こぶ
1056:名称未設定
23/03/25 13:38:53.62 pO8wJ1xu0.net
とり
1057:名称未設定
23/03/25 13:40:40.88 jgAiznrY0.net
Fin
1058:1001
Over 1000 Thread Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2184日 0時間 57分 50秒
1059:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています