応募部門:仕事効率化
作品名 :FileMaker PowerPack (Take 2)
製作者 :Piyomaru Software
作品概要:FileMaker Proのスクリプトに埋め込んで今日から使えるAppleScript集です(Mac用)。 さまざまな掲示板やフォーラムで調査を行い、FileMaker Proユーザーがお困りの機能や、困ってないけどすごい機能を中心に見繕ってみました。 画面上ですぐにテストデータを入れて実際に試せて、コピペで使えるコードも書き出せます(スクリプトエディタに即・転送)。
カスタムAppの解説
ScripID:1 [テキスト処理] テキストからタグを除去する
Webページを取り込んで文章だけ抽出したい場合に便利な機能
ScripID:2 [テキスト処理] 指定文字列をURLエンコード
GetAsURLEncoded関数を使えばFileMakerでも可能
ScripID:3 [テキスト処理] URLエンコード文字列をデコード
これは、、FileMakerでは出来ないと思う(確か)
ScripID:4 [テキスト処理] メールアドレスを抽出
プラグインでメール受信して、その中からメールアドレスだけ抽出するのに良さそう・・・だが、抽出出来ていない。
ScripID:5 [テキスト処理] リンクURLを抽出
URLとリンクが抽出される。
ああsample@hoge.comああ は抽出できないが
ああ sample@hoge.com ああ はOK
ま、どこが単語の区切りなんてわからないので、当たり前か。
ScripID:6 [テキスト処理] 住所を抽出
京都府木津川市南加茂台はエラーでる。
京都府木津川市南加茂台4は抽出できる。
どうやって判定しているか不思議!
ScripID:7 [テキスト処理] 電話番号を抽出(OSのバグのせいでmacOS 12+日本語環境で動かない)
OSのバグで表記のバージョンでは動かない。
OSアップデートされたら治るのかも。
ScripID:8 [テキスト処理] 日付データを抽出
令和3年11月12日
Sunny September 4
Fri., September 1
↓
2021年11月12日 金曜日
2021年9月4日 土曜日
2021年9月1日 水曜日
となる。
ScripID:9 [テキスト処理] 横書きテキストから縦書きテキストを作成
今日はいい天気だそうですが、私はよくわかりません。
↓
わ う 今
か で 日
り す は
ま が い
せ ︑ い
ん 私 天
︒ は 気
よ だ
く そ
ScripID:10 [テキスト処理] 絵文字クリーニング
絵文字をまるっと消す。
絵文字の文字コードをハードコードしているので、今後のバージョンアップで漏れる可能性はある。
これはFileMaker単体でも出来るかと。
ScripID:11 [テキスト処理] テキスト自動要約
私はとてもレビューするのが苦しい。178個のサンプルスクリプトがあるからだ。
しかし、挑戦状と受け取ってがんばるぞい。
ううううう・・・。
私はとてもレビューするのが苦しい。
がんばるぞい。がんばるぞい。
↓
私はとてもレビューするのが苦しい。 178個のサンプルスクリプトがあるからだ。
しかし、挑戦状と受け取ってがんばるぞい。
...私はとてもレビューするのが苦しい。
...がんばるぞい。
-----
途中、不要な改行が入った。ちゃんと要約はしてくれる。
ScripID:12 [テキスト処理] 禁則処理つき原稿用紙枚数シミュレーション
禁則処理つけて原稿用紙枚数を計算してくれる。
これ、FileMakerで再現するスクリプト作るの楽しそう。
ScripID:13 [画像処理1] オブジェクトフィールド上の画像を半分(50%)にリサイズ
4MBのJPEGファイルだと動作しなかった。
1.2MBのJPEGファイルは2.2MBになったけど、これはどういうことか作者さんコメントによろしくです。
サンプルファイルは12KB→10KBになっている。
可愛い柴犬が歩道との境目を歩いている画像は236KB→332KBになった。
PNGファイルを入れてもJPEGになるので、元のファイルは関係なさそうだし・・・
ScripID:14 [画像処理2] 画像1の上に画像2を重ね合わせる
ここで、「データ初期化」ボタンに画像2を初期化するステップを忘れていることに気づく。
画像が左下に寄るのは仕様か、意図せぬ動きか・・・。
中心が良いな。
ScripID:15 [画像処理1] スクリーンキャプチャを撮ってオブジェクトフィールドに入れる
この機能お客さんからのデバッグ報告に凄く便利そうなんだけど、お客さんのほとんどがWindows環境という・・。
やはり、テスト仕様書の作成用途かな。
ScripID:16 [画像処理1] このコンピュータのアイコンをオブジェクトフィールドに設定
実用性は難しいが、どちらかというとアップルスクリプトを理解するためのサンプルスクリプトか。
ScripID:17 [画像処理1] オブジェクトフィールド上に指定月のカレンダー画像を生成
11月の日曜日スタートのカレンダーが表示された。
もう11月かぁ。
ScripID:18 [画像処理1] オブジェクトフィールド上の画像を顔認識して塗りつぶし
サンプルデータの画像だと動作しなかった。「New Group.tiff」をJPEGに変換しても動作せず、半分にリサイズして(753KB)実行したら、黒く塗りつぶされて成功。
ScripID:19 [テキスト処理] インストールされているTTSキャラクターのうち指定音声の例文を発声
Macの中のしゃべるお姉さんとかお兄さんのサンプルボイスが聞ける。
ゴノレゴの声である「Whisper」はいない。
ScripID:20 [テキスト処理] テキスト読み上げ時間シミュレーション
前回は気づかなったけど、デスクトップにTTSに喋らせた音声ファイルが生成されるので、その長さを測ってる(のかも)。
文字数ではなくて、ちゃんと喋らした長さになってる。結婚式のスピーチシミュレーターに。
ScripID:21 [テキスト処理] フィールドに入っている文章が何語かを判定する
いくつか判定
言語が混ざると検討違いな言語と判定されますが、混ざらなければ正しく判定されます。
「ฉันอยากไปเชียงใหม่ 」→Thai(タイ語)
「Weiß Schwarz」→German(ドイツ語)
「FileMaker เป็นผลไม้」→Icelandic(アイスランド語)
「攻殻機動隊」→Japanese(日本語)
「我田引水」→Japanese(日本語)
「繩鋸木斷 水滴石穿」→Chinese(中国語)
(前回からのコピペ)
ScripID:22 [テキスト処理] フィールドに入っている文章が何語かを判定する(日本語で返す)
おお、ちゃんと日本語で返す。
「ฉันอยากไปเชียงใหม่ 」→"タイ語"と表示
ScripID:23 [テキスト処理] 指定テキストを簡易形態素解析(日本語単語分割)
私はソロモンへ帰ってきました。
↓
私/は/ソロモン/へ/帰っ/て/き/まし/た/。
これは某先生がやってるやつ。
そういう便利なライブラリがあるかと思いきや、結構ガリガリアップルスクリプト書いてる。
ScripID:24 [画像処理1] オブジェクトフィールドをCIBokehBlurでぼかし処理
ボケる。(やつはエースだ!)
ScripID:25 [画像処理1] オブジェクトフィールドをCISepiaToneでセピア調に
セピア調になる。
ScripID:26 [画像処理1] オブジェクトフィールドをCIColorMonochromeでモノクロに
モノクロになった。
ScripID:27 [画像処理1] オブジェクトフィールドにCIColorPosterizeで2階調ポスタライズ
2階調ポスタライズになった。
ScripID:28 [画像処理1] オブジェクトフィールドにCIGaussianBlurでぼかす
また違う感じのボケ
ScripID:29 [画像処理1] オブジェクトフィールドにCIDiscBlurでぼかす
ぼ・・・け・・・
ScripID:30 [画像処理1] オブジェクトフィールドをCIBoxBlurでぼかす
ボ・・・ケ・・・
ScripID:31 [画像処理1] オブジェクトフィールドをCIAreaAverageで色の平坦化
スリガラスみたいな感じに
ScripID:32 [画像処理1] オブジェクトフィールドにCIAreaHistogramで画像の明度分布をグラフ化(結果が出ない)
結果が出ない。
ScripID:33 [画像処理2] オブジェクトフィールドにCIDifferenceBlendModeで合成
ちょっとおもしろい。
キモく合体する感じ。
ScripID:34 [画像処理2] オブジェクトフィールドにCIAdditionCompositingで合成
どういう状況で使えばいいのか解らないけど、2つの画像が悪魔合体する感じ。
ScripID:35 [画像処理2] オブジェクトフィールドにCIColorBlendModeで合成
この辺から画像合体(悪魔合体)シリーズが続くので割愛
ScripID:36 [画像処理2] オブジェクトフィールドにCIColorBurnBlendModeで合成
ScripID:37 [画像処理2] オブジェクトフィールドにCIColorDodgeBlendModeで合成
ScripID:38 [画像処理2] オブジェクトフィールドにCIDarkenBlendModeで合成
ScripID:39 [画像処理2] オブジェクトフィールドにCIDivideBlendModeで合成
ScripID:40 [画像処理2] オブジェクトフィールドにCIExclusionBlendModeで合成
ScripID:41 [画像処理2] オブジェクトフィールドにCIHardLightBlendModeで合成
ScripID:42 [画像処理2] オブジェクトフィールドにCIHueBlendModeで合成
ScripID:43 [画像処理2] オブジェクトフィールドにCILightenBlendModeで合成
ScripID:44 [画像処理2] オブジェクトフィールドにCILinearBurnBlendModeで合成
ScripID:45 [画像処理2] オブジェクトフィールドにCILinearDodgeBlendModeで合成
ScripID:46 [画像処理2] オブジェクトフィールドにCILuminosityBlendModeで合成
ScripID:47 [画像処理2] オブジェクトフィールドにCIMaximumCompositingで合成
ScripID:48 [画像処理2] オブジェクトフィールドにCIMinimumCompositingで合成
ScripID:49 [画像処理2] オブジェクトフィールドにCIMultiplyBlendModeで合成
ScripID:50 [画像処理2] オブジェクトフィールドにCIMultiplyCompositingで合成
ScripID:51 [画像処理2] オブジェクトフィールドにCIOverlayBlendModeで合成
ScripID:52 [画像処理2] オブジェクトフィールドにCIPinLightBlendModeで合成
ScripID:53 [画像処理2] オブジェクトフィールドにCISaturationBlendModeで合成
ScripID:54 [画像処理2] オブジェクトフィールドにCIScreenBlendModeで合成
ScripID:55 [画像処理2] オブジェクトフィールドにCISoftLightBlendModeで合成
ScripID:56 [画像処理2] オブジェクトフィールドにCISourceAtopCompositingで合成
ScripID:57 [画像処理2] オブジェクトフィールドにCISourceInCompositingで合成
ScripID:58 [画像処理2] オブジェクトフィールドにCISourceOutCompositingで合成
ScripID:59 [画像処理2] オブジェクトフィールドにCISourceOverCompositingで合成
ScripID:60 [画像処理2] オブジェクトフィールドにCISubtractBlendModeで合成
ScripID:61 [画像処理1] オブジェクトフィールドをCIColorInvertで色反転処理
ネガポジ反転みたいな処理。
ScripID:62 [画像処理1] オブジェクトフィールドをCIMedianFilterで隣接ピクセルを平均化
いまいちどういう処理か解らなかった。
画像サイズが落ちる。(1.8MB→72KB)
ScripID:63 [画像処理1] オブジェクトフィールドをCIMotionBlurでぶれ表現
ぶれっぶれな画像に
ScripID:64 [画像処理1] オブジェクトフィールドをCIZoomBlurでぶれ表現
左奥にヒュンッって感じのブレ。
ScripID:65 [画像処理1] オブジェクトフィールドをCINoiseReductionでノイズ除去
たぶん、ノイズが除去されていると思う。
生成画像が54KBなので、ちょっと判定しづらい。
ScripID:66 [画像処理1] オブジェクトフィールドをCIBumpDistortionで球状に変形
画像歪める系のエフェクト
ScripID:67 [画像処理1] オブジェクトフィールドをCIBumpDistortionLinearで変形
画像歪める系のエフェクト
ScripID:68 [画像処理1] オブジェクトフィールドをCICircleSplashDistortionで変形(結果が変わらない)
画像歪める系のエフェクトだと思うんだけど、結果が変わらないらしい。
ScripID:69 [画像処理1] オブジェクトフィールドをCICircularWrapで変形
360°カメラみたいなエフェクトがかかる。
ScripID:70 [画像処理1] オブジェクトフィールドをCIDrosteで変形(結果が変わらず)
変わらないらしい。
ScripID:71 [画像処理2] オブジェクトフィールドをCIDisplacementDistortionで変形
おそらく、この表現かな。
ScripID:72 [画像処理2] オブジェクトフィールドをCIGlassDistortionで変形
なるほどCore Image Filterという機能を使っているのか。(たぶん)
この辺のリファレンスを見ると、一致するからたぶん・・・。
ScripID:73 [画像処理1] オブジェクトフィールドをCIGlassLozengeで変形
左下がぐにゃっとするやつ
ScripID:74 [画像処理1] オブジェクトフィールドをCIHoleDistortionで変形
左下にワームホールが出来るやつ
ScripID:75 [画像処理1] オブジェクトフィールドをCIHoleDistortionで変形
左下にワームホールが出来るやつ・・・・同じのが2つある
ScripID:76 [画像処理1] オブジェクトフィールドをCILightTunnelで変形(結果に変化なし)
変化しないらしい
ScripID:77 [画像処理1] オブジェクトフィールドをCIPinchDistortionで変形
紙みたいにぐにゃっとするやつ
ScripID:78 [画像処理1] オブジェクトフィールドをCIStretchCropで変形
トリミングかな。
ScripID:79 [画像処理1] オブジェクトフィールドをCITorusLensDistortionで変形
左下に誰かが光学迷彩使ってる感じの歪み
ScripID:80 [画像処理1] オブジェクトフィールドをCITwirlDistortionで変形
左下に空間の歪み
ScripID:81 [画像処理1] オブジェクトフィールドをCIVortexDistortionで変形
空間の歪みが進んだ
ScripID:82 [画像処理1] オブジェクトフィールドをCICircularScreenでハーフトーン処理
オシャレなエフェクト
白黒なってぐるぐるエフェクト。
サンプルデータのザクは左肩の形状からして「ザク・デザートタイプ」かな。
ScripID:83 [画像処理1] オブジェクトフィールドをCICMYKHalftoneでハーフトーン処理
印刷のCMYKのツブを強調したエフェクト。
ザク・デザートタイプがおしゃれに。
ScripID:84 [画像処理1] オブジェクトフィールドをCIDotScreenでハーフトーン処理
ここで、84個目のレビュー。
俺のモチベーションはザク・デザートタイプでたもっている。
ScripID:85 [画像処理1] オブジェクトフィールドをCIHatchedScreenでハーフトーン処理
グレースケールみたいなエフェクト。
書き忘れてるけど、だいたい画像は65KBぐらいになります。
ScripID:86 [画像処理1] オブジェクトフィールドをCILineScreenでハーフトーン処理
ザク・デザートタイプが縦縞に
ScripID:87 [テキスト処理] FileMaker ProのDock Iconにバッジ表示(5桁まで)
おお、これはすごい。
でも、どうやって消すんだ??
ScripID:88 [テキスト処理] FileMaker ProのDock Iconのバッジ消去
と、思ったら消すスクリプトサンプル。優しい。
さっきのスクリプトでも、空白にして実行したら消えた。
ScripID:89 [テキスト処理] FileMaker ProのDock Iconにプログレスバー表示
アイコンにプログレスバー、出ちゃったよ・・・
アップルスクリプト読むと、そういう命令が用意されているのではなく、プログレスバーを座標で指定して描いているような・・・。
プログレスバーの時間は「set max to 100」の所で指定できます。
ScripID:90 [テキスト処理] notification表示(Night Shift時非表示)
Macの通知センターにFileMakerのアイコンで通知を表示する。
長い処理をしている時に便利。
ScripID:91 [テキスト処理] ヘルプブックで指定アプリケーションの指定アンカーを表示
ヘルプのリンクを開くスクリプト
ヘルプの共有ボタンからメールを選択して、生成されるメールの本文の下記リンク
のSCPEDT1125を書いておくと、そのページが開く。
ただ、わざわざアンカーを調べて書くよりヘルプのURLをWebビューアで見せたほうが速い気もする。
ScripID:92 [テキスト処理] ヘルプブックで指定アプリケーションの指定キーワードを検索
基本操作ヘルプを出して、ココ見てね!
という時に良いかも。
ScripID:93 [画像処理1] オブジェクトフィールドをDock上のFMのアプリケーションアイコンに設定
本当にアイコンが変わってしまったけど再起動したら元に戻る。(よかった)
ScripID:94 [テキスト処理] システムのアピランスをDark/Light切り替えを行う(トグル切り替え)
初回は「FileMaker Pro.app」が「System Event.app」に対しての許可を求めてくる。
ScripID:95 [テキスト処理] Dockアイコンをバウンドさせる
本当にバウンドした。
ただし、FileMaker ProをDockのないサブディスプレイで実行した場合はバウンドしない。
ScripID:96 [画像処理1] Dock上のFMのアプリケーションアイコンをデフォルトに戻す
「オブジェクトフィールドをDock上のFMのアプリケーションアイコンに設定」と対になるスクリプト。
ScripID:97 [テキスト処理] ステータスバーに指定フィールドの内容を横スクロールさせてティッカー表示
FileMaker Proの再起動。ステータスバーに余白を空ける。をしたのだが動かない。
動いている所を見たい。
ScripID:98 [テキスト処理] 現在実行中のFMのバイナリアーキテクチャをテキストで出力
M1 MacBook Air(2020)で事項したら下記が表示
Intel 64, ARM 64
M1なんだけど、Intelも表示されてるのはなんでだろ。
ScripID:99 [テキスト処理] ワードクラウドのダイアログを表示
やってみた。
元ネタわかるかな?
FileMaker Proの立場から見ると、見たこと無いウインドウが出てビビる。
ScripID:100 [テキスト処理] Spotlightで指定パス以下のMPEG4ムービーファイルのパス一覧を取得
これは使い方によってはエ○ムービー発見器に使えるのでは・・・
ScripID:101 [テキスト処理] Spotlightで指定パス以下のファイルメーカーPro書類のパス一覧を取得
~/Documents/FM Hole/FM One応募/
↓
/Users/maro/Documents/FM Hole/FM One応募/PowerPack.fmp12
/Users/maro/Documents/FM Hole/FM One応募/old/PowerPack_v1.fmp12
/Users/maro/Documents/FM Hole/FM One応募/ゴミ箱/PowerPack.fmp12
ということが出来る。これはマジ仕事で使えるやつ。
ScripID:102 [テキスト+画像処理1] 指定ファイルからオブジェクトフィールドにアイコン画像を取得
指定したパスのファイルのアイコンを取得できる。
ユーザビリティの向上に使える。
ScripID:103 [テキスト処理] 16進数データをバイナリデータとしてファイルに書き込む
ちょっと用途が解らないので・・・・すみません。
ScripID:104 [テキスト処理] 指定の文字列をHEXダンプする
これはFileMakerのHexEncode関数でも実現できる。
結果も同じ。
ScripID:105 [テキスト処理] ダイアログでドットパターンを編集
10001110000000000000000000001
10010001000000000000000000001
10010000000000000000000000001
10011110000000000000000000001
10000001000000000000000000001
10000001000000001110001110001
10011110001110010000010001001
10000000010001010000010001001
10000000011111010011010001001
10000000010001010001010001001
10000000010001001110001110001
ScripID:106 [MarkDown処理] MarkDownテキストを簡易HTML変換
アップルスクリプト内で「https://api.github.com/markdown/raw」へ投げて返ってきたHTMLを格納して、それをWebビューアで表示してる。
これは、FileMakerの「URLから挿入」スクリプトステップでも出来そう。
ScripID:107 [テキスト処理] Apple Booksフォルダ内のebooks情報をすべて読み込む
該当フォルダ( "Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books/")
のファイルは下記だったが、
Books.plist
978234735.epub
988086757.epub
1013169088.epub
1020329728.ibooks
1067124010.epub
取得できたのは「1020329728.ibooks」のみ。セキュリティの問題なのか、意図せぬ動きなのかは不明。
ScripID:108 [テキスト処理] Unicodeの実体参照の文字列をデコードする
「Apple Booksフォルダ内のebooks情報をすべて読み込む」のタイトルは
「\U30d7\U30ed\U30b0\U30e9\U30df\U30f3\U30b0」で返ってくるので、それをデコードできる。
上記例では「プログラミング」に
ScripID:109 [テキスト処理] 指定ファイル/フォルダのメタデータを読み込む
パスを指定すると、ファイルの詳しい情報を出してくれる。写真ならExifデータも。
~/Desktop/俺.jpg
↓
_kMDItemDisplayNameWithExtensions = "俺.JPG"
kMDItemAcquisitionMake = "Apple"
kMDItemAcquisitionModel = "iPhone 11 Pro"
kMDItemAperture = 1.69599381283836
kMDItemBitsPerSample = 24
kMDItemColorSpace = "RGB"
kMDItemContentCreationDate = 2021-08-12 05:28:23 +0000
kMDItemContentCreationDate_Ranking = 2021-08-12 00:00:00 +0000
kMDItemContentModificationDate = 2021-08-12 05:28:23 +0000
kMDItemContentModificationDate_Ranking = 2021-08-12 00:00:00 +0000
kMDItemContentType = "public.jpeg"
kMDItemContentTypeTree = (
<<以下略>>
ScripID:110 [テキスト処理] 実行中のMacのスクリーンロックを実施
Macがロックされます。スリープではないので、アプリケーションが終了するわけではないです。
これ、不正な操作が行われた時とかに使えそう。
ちなみに、 "このコンピュータはスクリーンロックを実施しました。操作には、パスワードが必要です。実行中のプログラムは処理を継続しています。"と喋る。
この辺の文言もアップルスクリプト見れば解るレベルで改造出来る。
ScripID:111 [テキスト処理] ログイン中のユーザーの氏名とヨミガナを取得
初回はセキュリティの許可が求められる。
ScripID:112 [テキスト処理] 指定バンドルIDのアプリケーションの存在確認
「com.apple.iWork.Keynote」と指定すると、存在すれば「OK」と返す。
連携するシステムの場合に便利。
ScripID:113 [テキスト処理] 指定バンドルIDのアプリケーションの名称を取得
「com.apple.iWork.Keynote」→Keynote
と出る。
ScripID:114 [テキスト処理] 指定バンドルIDのアプリケーションのバージョンを取得
「com.filemaker.client.pro12」→「19.3.2」
FileMakerのバンドルIDって12なんだ・・・
ScripID:115 [テキスト処理] 指定バンドルIDのアプリケーションのInfo.plist(環境情報)を取得
com.filemaker.client.pro12
↓
{
BuildMachineOSBuild = 20E232;
BuildVersion = "19.3.2.206";
CFBundleDevelopmentRegion = English;
CFBundleDisplayName = "FileMaker Pro";
CFBundleDocumentTypes = (
{
CFBundleTypeExtensions = (
fmp12
);
CFBundleTypeIconFile = "FM12Doc.icns";
CFBundleTypeName = "FileMaker Document";
<<以下省略>>
ScripID:116 [テキスト処理] 指定バンドルIDのアプリケーションのローカライズ言語一覧を取得
「com.filemaker.client.pro12」
↓
de
zh-Hans
ja
en
es
it
sv
ko
Base
fr
nl
pt
ScripID:117 [テキスト処理] 指定バンドルIDのアプリケーションが起動中かどうかを取得
これも複数のアプリケーションを連動させる時に便利なやつ。
ScripID:118 [テキスト処理] 実行中のコンピュータの熱レベルを取得
「NSProcessInfoThermalStateNominal(安全)」
と出た。
アップルスクリプトのソースを見ると・・・・
"NSProcessInfoThermalStateNominal(安全)"
"NSProcessInfoThermalStateFair(常識の範囲内)"
"NSProcessInfoThermalStateSerious(ヤバい)"
"NSProcessInfoThermalStateCritical(危機的状態)"
"死亡"
ScripID:119 [テキスト処理] 指定バンドルIDのアプリケーションを強制終了
うっかり実行したらFM-1グランプリの編集画面開いてたのに閉じた・・・
※サンプルデータだと「com.apple.Safari」
ScripID:120 [テキスト処理] 起動中のGUIつきアプリケーション名一覧を取得
アプリが起動中か調べるのがあったけど、これで済んだ。
↓こんな感じで返ってくる
Finder
Slack
Microsoft Excel
Music
ScripID:121 [テキスト処理] 起動中のGUIつきアプリケーションのBundle ID一覧を取得
↓こんな感じで返ってくる。
com.apple.mail
com.coteditor.CotEditor
ScripID:122 [テキスト処理] HTMLカラー値から明度情報を取得(0.0〜1.0)
#412a23(焦げ茶)
↓
0.245871186256
#DA77FE(ピンク)
↓
0.692337930202
たぶん、合ってる(と思う)知らんけど。
ScripID:123 [テキスト処理] HTMLカラー値からざっくりどういう色かを判定(カラードメイン判定)
↓
purple
ピンクとパープルの間ぐらいなので、確かに合ってる。
ScripID:124 [テキスト→画像処理] HTMLカラー値からカラーを計算して色つき画像を作成
↓
緑の四角いJPEG画像
これは時々ユーザ指定の背景色にしたい時があるので使える。
ScripID:125 [テキスト処理] システムの全警告音を同時再生
ジョーク的なやつ
ScripID:126 [テキスト処理] 接続中の光学ドライブの情報をJSONで返す
ちゃんと返ってくる。
[{"busName":"USB","supportLevel":"Unsupported","vendorName":"MATSHITA","productName":"DVD-RAM UJ8E0","revisionNo":"1.00","driveNum":"1","suppoortLevel":"Unsupported"}]
※サンプルデータはBlu-rayドライブなのに、テストしたのはDVD-RAMドライブなので少し負けた気分
ScripID:127 [テキスト処理] 稼働中の電源がACかDCかを取得する
これは・・・、DCが出る時ってどういう・・・・?
iMac?
ScripID:128 [テキスト処理] バッテリー情報をJSONで取得
エラーが出て返ってこない。
<<省略>>Temperature\"=12,\"MinimumTemperature\"=135,\"RDISCnt\"=0,\"MaximumTemperature\"=485},\"Ra02\"=0}"のタイプをnumberに変換できません。
型が間違ってるのかなあ。
ScripID:129 [テキスト処理] 実行中のMacの機種IDを取得
私のM1 MacBook Airは
「MacBookAir10,1」
でした。
ScripID:130 [テキスト処理] 実行中のMacのシリアルナンバーを取得
出たけど、悪用されるかもしれないので、結果は書かない。
ScripID:131 [テキスト処理] 実行中のMacのネットワークの稼働状況をJSONで取得
{"outPacket":31421805,"inPacket":55654146,"inSize":"51G","outSize":"7238M"}
スピードテストしたら、だいたい同じ数値が出た。
サンプルデータには勝った。
ScripID:132 [テキスト処理] 実行中のMacのディスクの稼働状況をJSONで取得
私のディスクの戦闘力。
{"writeSize":"2871G","readSector":138290103,"writeSecotr":29992155,"readSize":"4718G"}
ScripID:133 [テキスト処理] 実行中のMacのCPUの詳細な名称を取得
「Apple M1」
思ったよりシンプル
ScripID:134 [テキスト処理] 指定名称のScreen Saverを起動
流れ作業的にレビューやってて、ボタン押したらスクリーンセイバー起動してびっくりした。
ScripID:135 [テキスト処理] 指定文字列をSyslogに出力
確かに記録された。
ScripID:136 [テキスト処理] 実行中のMacのOS情報を詳細に出力
ProductName: macOS
ProductVersion: 12.0.1
BuildVersion: 21A559
ScripID:137 [テキスト処理] 実行中のMacに登録してあるプリンタ一覧を取得
EPSON PX-M5081F
Brother DCP-J978N
EPSON PX-M5081F Series
EPSON PX-M5081F Series - ファクス
ScripID:138 [テキスト処理] 指定キーワードでWikipedia REST API検索してJSONでカテゴリ情報取得
ちょっと時間かかる。
クラリス
↓
[{"theWord":"クラリス・スターリング","catList":["トマス・ハリス","小説の登場人物","映画の登場人物","架空の警察官"]},{"theWord":"クラリス (ディズニーキャラクター)","catList":["ディズニーキャラクター","架空の哺乳類","架空の歌手"]},{"theWord":"アイドルマスター シンデレラガールズ#クラリス","catList":["アイドルマスター シンデレラガールズ","アイドルマスターのコンピュータゲーム","Cygamesのゲームソフト","Mobage","ソーシャルゲーム","2011年のコンピュータゲーム","育成シミュレーションゲーム","漫画作品 あ","2012年の漫画","ガンガンONLINE","月刊ガンガンJOKER","月刊ビッグガンガン","ヤングガンガン","サイコミ","アイドルを題材とした漫画作品","ゲームのスピンオフ作品","スーパーロボット大戦シリーズの参戦作品","継続中の作品"]},{"theWord":"クラリス (企業)","catList":["1983年設立の企業","サンタクララの企業","Apple"]},{"theWord":"クラリスロマイシン","catList":["マクロライド系抗菌薬<!--用語を理解していれば判るように、クラリスロマイシンは抗生物質ではないので、抗菌薬と総称しないと、誤記です。-->","配糖体"]}]
ScripID:139 [テキスト処理] LAN上のSMBサーバー名一覧をJSONで取得
["Sago Mac mini","Londenion","Londenion(TimeMachine)","Jun's MacBook Air"]
ScripID:140 [テキスト処理] LAN上のDAAPサーバー名一覧をJSONで取得
音楽のサーバー。
["Londenion(iTunes)","Sago Mac miniのライブラリ"]
ScripID:141 [テキスト処理] LAN上のeppcサーバー名一覧をJSONで取得
eppcサーバーはアップルスクリプトでの操作を受け付けるサーバー・・・でいいのかな。
環境設定の共有→リモートApple Eventsにチェック入れたらそうなる。
["Sago Mac mini"]
ScripID:142 [テキスト処理] LAN上のafpサーバー名一覧をJSONで取得
["Londenion(AFP)","Londenion(TimeMachine)","Jun's MacBook Air"]
ScripID:143 [テキスト処理] LAN上のLPDサーバー名一覧をJSONで取得
印刷系のサーバーは無いので、テスト出来ず。
ScripID:144 [テキスト処理] 指定文字の花文字テキスト化
苦
↓
苦苦 苦苦
苦苦 苦苦
苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦
苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦
苦苦 苦苦
苦苦 苦苦 苦苦
苦苦
苦苦苦 苦苦 苦苦
苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦苦
苦苦
苦苦
苦苦苦苦苦苦苦苦苦苦苦苦苦
苦苦苦苦苦苦苦苦苦苦苦苦苦
苦苦 苦苦
苦苦 苦苦
苦苦 苦苦
苦苦苦苦苦苦苦苦苦苦苦苦苦
苦苦苦苦苦苦苦苦苦苦苦苦苦
苦苦 苦苦
(今の気持ち)
ScripID:145 [テキスト処理] FileMaker Windowの大回転
ウインドウが勝手に移動する系。
ククク・・・これはFileMakerのスクリプトでも出来るぜ
ScripID:146 [テキスト処理2] 2つのテキストの差分をダイアログ表示
これ、「関数・スクリプトガイド」作ってる時に欲しかった。
ScripID:147 [テキスト処理] AirDrop経由でiPhone/iPad/Macに指定ファイルを送信
ファイル配布時に便利そう。
FileMaker Pro側で、Desktopにファイル書き出して、そのパスを与えて・・・
って事ができる。
ScripID:148 [テキスト処理] JSON文字列で指定した位置情報を異なる縮尺の地図でダイアログ表示
AppleマップがFileMaker Proで出てる!
こんなこと出来るのか!!
ScripID:149 [テキスト処理] 簡易形態素解析(By EasyJParse)してそれっぽく伏せ字処理
「指定テキストを簡易形態素解析(日本語単語分割)」の応用かな。
単語の部分が伏せ字に。
ScripID:150 [テキスト処理] プロポーショナルフォントで画面表示したピクセル幅で行ソート(短→長)
文字数ではなくて、フォントの幅を考慮してソートしている。
property NSFont : a reference to current application's NSFont
property NSColor : a reference to current application's NSColor
property NSImage : a reference to current application's NSImage
property NSString : a reference to current application's NSString
ScripID:151 [テキスト処理] 指定容量のRAM Diskを作成してマウント
RAMディスク・・・だと・・・?
まだ存在したのか!
これ、オールドマックユーザーしか解らないネタ。
ScripID:152 [テキスト処理] 指定フォルダ内容をディスクイメージ化してマウント
マウントした。
ScripID:153 [PDF処理] 指定のPDFをページごとに分割&画像化してオブジェクトフィールドに保存(macOS 11まで)
これが動かないのが一番残念。→最後に動くサンプルスクリプトがありました。
macOSのアップデートに期待。
これが出来れば、文書管理システムが作れる。PDFを画像単位で分割して、そのページのテキストも取れるのでFileMaker Proで検索して、指定ページを表示。ってのが出来る。
Macだけでしか動かないが、一度処理をしてしまえば良いだけなので、そのためだけにMac mini買っても安いものだ。
ScripID:154 [テキスト処理] macOS標準搭載のスクリプトメニューをメニューバーに表示
出てきた。
ScripID:155 [テキスト処理] WANステータスをメニューバーに表示
出てこず。
ScripID:156 [テキスト処理] VPNステータスをメニューバーに表示
出てきた。
システム環境設定のチェックを入れるのと同じ。
ScripID:157 [テキスト処理] Time Machineテータスをメニューバーに表示
出てきた。
システム環境設定のチェックを入れるのと同じ。
ScripID:158 [テキスト処理] PPPoEステータスをメニューバーに表示
出てきた。
システム環境設定のチェックを入れるのと同じ。
ScripID:159 [テキスト処理] PPPステータスをメニューバーに表示
出てきた。
システム環境設定のチェックを入れるのと同じ。このアイコンは懐かしい。
ScripID:160 [テキスト処理] イジェクトボタンをメニューバーに表示
出てきた。
でも、SSD認識しないなーと思ってたら、これってイジェクトボタンなので、DVDドライブ繋がないとダメなやつだった。
ちゃんとDVDドライブが開きました。
ScripID:161 [テキスト処理] メニューバークロックのアナログ/デジタル表示切り替え(macOS 11以降)
変わった。
そして場所も変わった。
ScripID:162 [テキスト処理] Spacesの選択画面に入る
初回はアクセシビリティの許可が求められる画面が出てきた。
許可しても動きませぬ。
ScripID:163 [テキスト処理] Dock+Menu Barをオートハイド設定する
メニューが自動的に隠れるようになった。
OSの許可は何も求められなかったが、これってFileMaker Pro限定なのね。
ScripID:164 [テキスト処理] Dock+Menu Barのオートハイド設定を解除する
「Dock+Menu Barをオートハイド設定する」とセットのスクリプト
ScripID:165 [テキスト処理] Night Shiftをオンにする
画面が夕方になった
ScripID:166 [テキスト処理] Night Shiftをオフにする
「Night Shiftをオンにする」とセットのスクリプト
ScripID:167 [テキスト処理] デスクトップを表示状態に
「デスクトップを表示状態に」とセットのスクリプト
ScripID:168 [テキスト処理] デスクトップを非表示状態に
散らかってるデスクトップが、あら不思議!
さっぱり綺麗になりますわ。
デスクトップのちらかったファイルが非表示になります。プレゼン前にするやつ。
ScripID:169 [テキスト処理] 実行環境から見えるSSID(WiFi名)一覧をJSONで取得
見えた。
ScripID:170 [テキスト処理] インターネット接続確認
「OK」って返ってきた
Wi-Fi切ったらちゃんと「NG」が返ってくる。
ScripID:171 [テキスト処理] デスクトップを黒く
漆黒の闇に
(戻る時は自分で壁紙を設定せねばならぬ)
ScripID:172 [テキスト処理] デスクトップを白く
純白に
(戻る時は自分で壁紙を設定せねばならぬ)
ScripID:173 [テキスト処理] マウスカーソルを消去→5秒後に復帰
びっくりポン
ScripID:174 [テキスト処理] Switch Control(アクセシビリティ系OS標準搭載Scriptパレット)を起動
環境設定が立ち上がってスイッチコントロールまで表示して落ちる。
うーん。
ScripID:175 [テキスト処理2] JSONで記述した2つの位置情報間の距離を測る(CoreLocation APIでメートル単位で計測)
このサイトの結果と同じなので、たぶん地球の丸さも考慮して出してるはず。
https://s-giken.info/distance/distance.php
{"latitude":35.709352, "longitude":139.666143}
↓
{"latitude":35.746072, "longitude":139.675555}
4162.26452464409(作品の結果)
4,161.83 m(サイトの結果)
ScripID:176 [テキスト処理2] JSONで記述した1つの位置情報と、複数の位置情報の間で距離計算して最も近いものを返す
たぶん、合ってる。
ScripID:177 [テキスト処理] 指定のIPv4アドレスのだいたいの場所をダイアログで地図表示(ip-api.com)
このサイトと結果が同じ
ScripID:178 [PDF処理] 指定のPDFをページごとに分割&画像化してオブジェクトフィールドに保存(macOS 12以降)
「FileMaker 関数・スクリプトビギナーズガイド 19」955ページを入れたら問題なく分解された。
数分ぐらい。
一つ問題を発見、これはPDFの問題だと思うが例えば「ポータル」と入力しても検索出来ない。これは「ポ」という字を「ホ」と「゜」という2つの文字でPDFは表現しているので、内部的には別の文字にとして管理されるので検索されない。
ま、問題出る文字調べて全置換してやれば済む話。
この辺が詳しい。
カスタムAppの設計
〜省略〜
感想
大ボリュームで大変でした。
時々モビルスーツの画像が出てくるのでなんとか頑張れたと思います。
アップルスクリプトで用意されている機能を試した的なものも多かったので実用性あるスクリプトは相対的に少なくなってしまいました。しかし、FileMaker Proからアップルスクリプトを実行する教材としては意味があると思います。
実用性という観点からだと「指定のPDFをページごとに分割&画像化してオブジェクトフィールドに保存(macOS 12以降)」がピカイチだと思います。
このネタでFileMaker プラットフォームでのドキュメント管理システムが出来てしまうのでかなりすごいことです。
その他実用的なものは色々とありましたが、アップルスクリプトなのでMac限定となっていしまうことが一番の問題です。ただ、画像処理など、Macが一台あって結果をFileMakerに保存してしまえば良いものはOS関係ないので実用性は十分にあります。
競合するものはJavaScriptで、それよりお気軽で安定性があれば全く問題ないと思います。
審査結果
予選通過
改修ポイント
動かないスクリプトがありましたので、その辺はちょっと問題だなと思う一方でOSや環境の問題もあるので、一概に言えない所・・・。
スクリプトを実行する度にプレビューモードに切り替えて、ブラウズモードに戻ってくるステップが入っていますが、これは不要なのでは?と思います。
データをコミットするだけの目的であれば、「レコードの確定」というスクリプトステップがありますので、それを使った方がシンプルになります。
Comments