DTPab

DTPにまつわるあれこれ

タイムスタンプを付けてAppleScript内の変数をテキストに書き出したい

AppleScriptで変数の値をテキストファイルとして書き出したかったんですが、その時タイムスタンプも付けたかった。
ので、AppleScriptからJavaScriptを実行してタイムスタンプを取得し、シェルコマンドを叩いてテキストファイルを吐き出す、というAppleScriptの「みんないいとこ取り」みたいなものを書きました。
こういうことができるようになってくると、AppleScript面白いなーって思います。

set hoge to "ここに書き出したい値を入れる"
set fPath to "~/desktop/hoge" & getTimeStamp() & ".txt" --書き出し先ファイルパス

do shell script "echo " & quoted form of hoge & " > " & fPath

on getTimeStamp()
    set jsString to "
var now = new Date();
var YEA = now.getFullYear();
var MON = ('0' + (now.getMonth()+1)).slice(-2);
var DAY = ('0' + now.getDate()).slice(-2);
var HOR = ('0' + now.getHours()).slice(-2);
var MIN = ('0' + now.getMinutes()).slice(-2);
var SEC = ('0' + now.getSeconds()).slice(-2);
YEA+MON+DAY+HOR+MIN+SEC;
"
    set jsRes to run script jsString in "JavaScript"
    return jsRes
end getTimeStamp

調べるとAppleScriptでテキストファイルを書き出す正攻法が割と面倒臭そうだったので、シェルコマンドで実装しました。
タイムスタンプのJavaScriptについては割と定型句? なので特に解説いたしません。書き捨てた感じなのであまりキレイじゃないのはご了承ください^^;;

【追記 6/24 23:50】
こうちゃん氏からシェルコマンドでもできると教えてもらいました。

なるほど、これはいい。

do shell script "date +%Y%m%d%H%M%S" -->"20190624235141"

dateコマンドの引数はこちらにまとまってました。

hydrocul.github.io

得られる結果が同じでも、それを実現するための手段が選べるというのは後々プラスになるので、こういうツッコミ大歓迎です。多謝!
【追記ここまで】

AppleScriptでJavaScriptが実行できるようになったのはJavaScript for Automation*1がOSに搭載された10.10(Yosemite)からみたいですね。

qiita.com

最近仕事でAppleScriptを書かされる書かせてもらう機会が増えてきてて、これもその一部です。
もう少し自由にかけるようになったら楽しいだろうな、ってことで今日はここまで。

そうそう、今週末にもくもく会やりますので、ご都合つく方は途中からでも途中まででもぜひどうぞ。
記事執筆時点で欠員6名となっています(泣)
よろしくお願いします〜!

dtpmkmk.connpass.com

*1:通称「JXA」