LoginSignup
0
0

More than 5 years have passed since last update.

[automator + applescript + shell] ダイアログで名称を取得してフォルダとファイルを作る

Last updated at Posted at 2017-01-01

きっかけはtypora

typora

Markdownエディタです。最近の流行りに乗っており以下のような機能を持ってます。
- GFM
- mermaidでグラフが綺麗
- WYSIWYGエディタ(これまで使ってきたものの中では一番ストレスなく動いてくれる)
- Win/OSX/Linux

詳細は以下。
- 様々な機能を備えたMac用Markdownエディタ「Typora」がシーケンス図やフローチャートなどのダイアグラム表示をサポート。
- Typora - 多機能でエレガントなMarkdownエディタ

これが設定としてjpgなどをイメージを読み込むときに、指定のフォルダにコピーを作ってくれるのだけど、いちいちディレクトリを作り、YAMLを書き込むのがめんどくさいので自動にやって欲しい。

やったこと

"サービス"で指定したフォルダを受け取る

newnote_1.png

シェルスクリプトを実行して、フォルダ名とファイル名を取得
入力は引数として引き渡す。

New Note in Yiki.workflow 2017-01-01 22-47-44.png

AppleScriptを実行
ここでダイアログを表示して、作成したいものの名前を取得
New Note 2017-01-01 22-49-29.png

New Note in Yiki.workflow 2017-01-01 22-55-21.png

on run {input, parameters}
    set arg2 to item 2 of input
    set dpath to arg2 & "/"

    set theResult to display dialog "New Note Name" & return & "in " & dpath with title "New Note" buttons {"Cancel", "Create"} default answer ""

    set buttonText to button returned of theResult
    set dname to text returned of theResult

    if buttonText is "Cancel" then
        quit me
    end if

    if dname is "" then
        quit me
    end if

    set container to {dpath, dname}

    return container

end run

フォルダとファイルを作成
スペースはハイフンで置換、作成したmarkdownファイルに、イメージをどこに保存するのかについて、YAMLの設定を記述しておく。

New Note in Yiki.workflow 2017-01-01 22-56-29.png

cd $1
dname=(`echo $2 | tr -s " " "-"`)
mkdir $dname
fname="${dname}.md"
cd $dname
touch $fname
mkdir src
echo -e "---\ntypora-copy-images-to:./src\n---" >> $fname
open -a "typora" $fname

結果できるもの

.
├── src
└── test.md

今回やらなかった事

  • 現在アクティブなウィンドウとディレクトリを読み込み、そこに作成する。
    OSXのファインダーのcommand+shift+Nでフォルダを作れるように、指定したものをつくりたかった。

なんで現在の状態だと、ノートを作りたいところの一個上の階層のディレクトリに対して操作を行わないと、ノートを作りたい階層を正確に取得出来ないんですよね...まぁ困ってはいませんが。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0