テキストの新規作成をメニューに加える方法
Finderである場所を開いた状態で二本指でタップすると、メニューに「新規フォルダ」という項目が表示されますが、これと同様に「新規テキスト」というのを表示させたいです。テキストはリッチテキスト形式です。可能ですか?
MacBook Air 13″, macOS 12.1
Finderである場所を開いた状態で二本指でタップすると、メニューに「新規フォルダ」という項目が表示されますが、これと同様に「新規テキスト」というのを表示させたいです。テキストはリッチテキスト形式です。可能ですか?
MacBook Air 13″, macOS 12.1
hohokihai さんのコメントにある、Automator クイックアクションは基本コピペでできちゃいますよ。下記のサポート記事を参考にして作成してみてはどうでしょうか。
Macでクイックアクション・ワークフローを使用する
https://support.apple.com/ja-jp/guide/automator/aut73234890a/mac
MacのAutomatorでワークフローを作成する
https://support.apple.com/ja-jp/guide/automator/aut7cac58839/mac
ーーーーーー
ワークフローはこんな感じ。(下図は Mojave の Automator です)
「シェルスクリプトを実行」アクションの中身はこんな感じでも良いかも。
richtext='{\rtf1\ansi\ansicpg932\cocoartf1671\cocoasubrtf600
{\fonttbl}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
}'
for f in "$@"; do
printf '%s' "${richtext}" > "${f}/untitled.rtf"
done
hohokihai さんのコメントにある、Automator クイックアクションは基本コピペでできちゃいますよ。下記のサポート記事を参考にして作成してみてはどうでしょうか。
Macでクイックアクション・ワークフローを使用する
https://support.apple.com/ja-jp/guide/automator/aut73234890a/mac
MacのAutomatorでワークフローを作成する
https://support.apple.com/ja-jp/guide/automator/aut7cac58839/mac
ーーーーーー
ワークフローはこんな感じ。(下図は Mojave の Automator です)
「シェルスクリプトを実行」アクションの中身はこんな感じでも良いかも。
richtext='{\rtf1\ansi\ansicpg932\cocoartf1671\cocoasubrtf600
{\fonttbl}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
}'
for f in "$@"; do
printf '%s' "${richtext}" > "${f}/untitled.rtf"
done
他のスレッドで「デフォルトと和解せよ!」などと投稿した手前(且つ個人的にはカスタマイズ系のユーティリティは基本的に使用しないので)積極的に紹介しづらいのですが下記とか。
https://apple.stackexchange.com/questions/94755/right-click-create-a-new-text-file-how
XtraFinder、BetterTouchTool などが紹介されているようですがとりあえず New File Menu や Create File Menu とか。
https://apps.apple.com/jp/app/new-file-menu-free/id1066302071
https://apps.apple.com/jp/app/new-file-menu/id1064959555
https://apps.apple.com/jp/app/create-file-menu/id1440519779
Finder のツールバーに登録して実行するタイプでも良ければこんな感じ。
作り方
使い方
Finder でフォルダを開き、
ツールバーからアプレットを実行
コード
'use strict';
var Finder = Application('Finder');
var rich_text = `{\\rtf1\\ansi\\ansicpg932\\cocoartf1671\\cocoasubrtf600
{\\fonttbl}
{\\colortbl;\\red255\\green255\\blue255;}
{\\*\\expandedcolortbl;;}
\\paperw11900\\paperh16840\\margl1440\\margr1440\\vieww10800\\viewh8400\\viewkind0
}`;
function run() {
const furl = $.NSURL.URLWithString(Finder.insertionLocation().url());
const fpath = furl.path;
const new_fpath = fpath.stringByAppendingPathComponent('untitled.rtf');
const enc = $.NSUTF8StringEncoding;
const err = $();
if (! $(rich_text).writeToFileAtomicallyEncodingError(new_fpath, true, enc, err)) {
throw new Error(err.localizedDescription.js);
}
}
コンテクストメニューにメニューアイテムを追加するには、アプリケーションを作る必要があります。
手軽なところでは、Automatorで作ることができますが、フォルダを選択したときのみメニューに表示されます。エンクロージング・フォルダ(現在開いているフォルダ)では表示されません。
Xcodeを使うのであれば、Finder Sync Extensionを作ります。
Finder Sync
すみません。ちょっと変更。
'use strict';
var Finder = Application('Finder');
var rich_text = `{\\rtf1\\ansi\\ansicpg932\\cocoartf1671\\cocoasubrtf600
{\\fonttbl}
{\\colortbl;\\red255\\green255\\blue255;}
{\\*\\expandedcolortbl;;}
\\paperw11900\\paperh16840\\margl1440\\margr1440\\vieww10800\\viewh8400\\viewkind0
}`;
function run() {
const dirname = $.NSURL.URLWithString(Finder.insertionLocation().url()).path;
const fpath = dirname.stringByAppendingPathComponent('untitled.rtf');
const enc = $.NSUTF8StringEncoding;
const err = $();
if (! $(rich_text).writeToFileAtomicallyEncodingError(fpath, true, enc, err)) {
throw new Error(err.localizedDescription.js);
}
}
untitled.rtf が既存の場合は上書きしないようにしました。
'use strict';
var Finder = Application('Finder');
var rich_text = `{\\rtf1\\ansi\\ansicpg932\\cocoartf1671\\cocoasubrtf600
{\\fonttbl}
{\\colortbl;\\red255\\green255\\blue255;}
{\\*\\expandedcolortbl;;}
\\paperw11900\\paperh16840\\margl1440\\margr1440\\vieww10800\\viewh8400\\viewkind0
}`;
function run() {
const root = $.NSURL.URLWithString(Finder.insertionLocation().url()).path;
const fpath = root.stringByAppendingPathComponent('untitled.rtf');
const enc = $.NSUTF8StringEncoding;
const err = $();
if (! $.NSFileManager.defaultManager.fileExistsAtPath(fpath)) {
if (! $(rich_text).writeToFileAtomicallyEncodingError(fpath, true, enc, err)) {
throw new Error(err.localizedDescription.js);
}
}
}
追記。Create File Menu に関しては 2021/12/28 現在
デベロッパである"FIPLAB Ltd"は、プライバシー慣行およびデータの取り扱いについての詳細をAppleに示していません。
とのことです。
方法があるらしいことは分かりましたが、どうやるのか分からないので、解決はしていませんが、まあ、技術者じゃないとできないらしいので、諦めます。
さらに追記。ちなみに既出のリンク先の AppleScript の話は全くわからないのであえて触れていません。というか AppleScript でできるの?
https://apple.stackexchange.com/questions/94755/right-click-create-a-new-text-file-how
テキストの新規作成をメニューに加える方法