2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

AppleScript アップルスクリプト 質問、発表 6

1 :名称未設定:2013/12/21(土) 21:50:45.07 ID:1PJJFexL0.net
質問、発表どっちでもスレ。

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
OSバージョンも忘れずに。

■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/

401 :名称未設定:2014/11/24(月) 19:41:09.49 ID:VgdmtQok0.net
スリープから起こすのは
do shell script "sudo pmset schedule wake '11/25/14 05:00:00'" password "MYPASS" with administrator privileges
みたいな感じで簡単なんだが

毎日という設定
sudo pmset repeat wake MTWRFSU '05:00:00'
にすると違う時刻を入れると上書きされてしまうので(俺の古いiMacの場合)
たとえば3時間ごとに実行したい場合は起きる度に次の時刻を設定しないとならないんだが
これが気分的にすっきりしない

402 :名称未設定:2014/11/24(月) 23:41:19.56 ID:LaGmcxsO0.net
>>399-401
やはりそれらの組み合わせが一般的なんですか
自分が俄仕込みなもので、launchdやcronを覚える上にsudoコマンドときて正直怖さとハードルの高さがあり
(launchdはLingonというソフトウェアで扱えるらしいですが)
前述の目覚ましアプリで出来るなら一括だし簡単に思えたんですが
それでもやっぱりlaunchdやcronでやることにメリットがあるのでしょうか?

省エネルギーのスケジュール設定は一日一度しか設定できず
これが複数設定できたらよかったんですけど

403 :名称未設定:2014/11/27(木) 02:17:29.69 ID:hXaivlfB0.net
>>402
cronやlaunchdの方ができることが多いし自由度が高い。OSの機能を利用すればできることをわざわざアプリケーションをインストールしてやるのもなあというのもある。

>>401
pmset repeat wakeは一つの時間しか指定できなくて、何だそれって思ったわ。
sleepwatcherを入れて、スリープするときに復帰時間を指定するスクリプトを実行するようにすればスリープ状態を意識せずに運用できるんじゃないかな

404 :名称未設定:2014/11/28(金) 22:58:37.96 ID:bBi4Tloj0.net
出来るだけOSXのGUIでやりたいのなら
カレンダーのイベントで
通知→カスタム→ファイルを開く
でapplescriptをアプリケーションにした奴を指定すればいいよ

405 :名称未設定:2014/11/30(日) 19:01:39.92 ID:Ma5zQICB0.net
>>403
勉強してみます
今回の用途と私のレベルでは、全部やってくれるアプリのほうがいいかもしれませんが…

>>404
Mavericksなんですが今作成したスクリプト(アプリケーション形式)を指定しても
「通知に問題がありました。」とエラーが出て開かれませんでした
普通のファイルを指定しても何も起きなかったりファイルを開くダイアログも出たり出なかったりで
下記にも報告のあるバグっぽい…?
> Calendar ver7.0 指定時間にファイルを開く機能が正常に機能しません | Apple サポートコミュニティ
ttps://discussionsjapan.apple.com/message/100804893
ただ、どのみちこの方法だけではスリープ解除まではできませんよね?

406 :名称未設定:2014/12/10(水) 22:52:42.16 ID:8lxhxVtu0.net
Applescriptの話になってきたので
「Mac OS Xのテキストエディタ総合 Part12」から移動してきました

--CotEditorでファイルを開いて文末に日時を挿入
--ファイルパスの例"/Users/ユーザー名/Desktop/ファイル名.txt"
set filePath to "ファイルパス" as POSIX file

--上記ファイルパスのファイルをCotEditorで開く
--(CotEditor.appがApplicationsフォルダの直下にある場合を想定)
tell application "Finder"
open filePath using file "CotEditor" of folder "Applications" of startup disk
end tell

tell application "CotEditor"
activate
tell front document
-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}
--末尾に日時を挿入
set contents of selection to return & return & return & return & "---" & (current date) & "---"
--日時挿入した行の2行上にカーソルを移動
set theRange to range of selection
scroll to caret
set item 1 of theRange to (item 1 of theRange) + 2
set item 2 of theRange to 0
set range of selection to theRange
end tell
end tell

407 :名称未設定:2014/12/10(水) 23:06:29.19 ID:8lxhxVtu0.net
>>406の補足

これならCotEditor起動時に新規ファイルは開かないようです

あと、これをアプリケーション形式で保存しても
少なくともうちのOS10.6.8の環境では問題なく動作していますねぇ

開きたいテキストファイルをAppleScriptエディタのウインドウに
ドラッグするとフルパスが入るので、それを使えば
アプリケーション形式で保存したスクリプトをどこに置こうが
大丈夫かと思いますけども

アプリを「実行専用」にしないで書き出していれば、
書き出したアプリを右クリックしてパッケージを表示し、
「Contents/Resources/Scripts/main.scpt」
をダブルクリックすればファイルパスを書き換えることができますよ

408 :名称未設定:2014/12/10(水) 23:22:44.41 ID:YrN3wcTj0.net
>>406,408
できました!すごくうれしい
新規ファイルも開かないし、アプリケーションでもうごきます。

>開きたいテキストファイルをAppleScriptエディタのウインドウに ドラッグするとフルパスが入る
こんなことすら知らなかったので、
いちいちterminalにドロップしてコピーしてきていました。

ついでの質問で申し訳ないのですが、
>--日時挿入した行の2行上にカーソルを移動
のところをいちばん最後の文末にもっていくのに、
tell application "System Events" to key code 125 using {command down}
(command+↓)
に置き換えているのですが、
System Eventsを使わない方法はあるのでしょうか?
もしあれば、時間のあるときでいいので教えてください。
どうもありがとうございます。

409 :名称未設定:2014/12/10(水) 23:45:26.72 ID:8lxhxVtu0.net
>>408
動いたようで良かったです

>いちばん最後の文末にもっていく

えーと、CotEditorでやるなら、

-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}

これを最後にもう一度書けばカーソルがファイルの最後に移動しますが、
それとは違います?

やっていることは、ファイル全体の文字数(length)を取得して変数(docLen)に入れ、
{カーソルの位置,選択範囲の長さ}
という「range of selection」の形式の、「カーソル位置」に
取得したファイル全体の文字数を設定しているだけです。

カーソルをファイルの最後に移動したあとは、

set contents of selection to return
set docLen to length
set range of selection to {docLen, 0}

とやれば挿入した日時の次の行にカーソルが移りますよ

410 :名称未設定:2014/12/11(木) 00:16:19.33 ID:/xJryEhL0.net
>>408です
>>409
うまくいきました
よくみたら日時を挿入するまえに同じことをしてたんですね
全体でこんなかんじになりました。
遅くまでおつきあいしてくれて感謝しています。ありがとうございました。

--CotEditorでファイルを開いて文末に日時を挿入
--ファイルパスの例"/Users/ユーザー名/Desktop/ファイル名.txt"
set filePath to "ファイルパス" as POSIX file

--上記ファイルパスのファイルをCotEditorで開く
--(CotEditor.appがApplicationsフォルダの直下にある場合を想定)
tell application "Finder"
open filePath using file "CotEditor" of folder "Applications" of startup disk
end tell

tell application "CotEditor"
activate
tell front document
-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}
--末尾に日時を挿入
set contents of selection to return & return & return & return & (current date) & return
-- 表示をスクロールして?カーソルをドキュメントの末尾に移動
set theRange to range of selection
scroll to caret
set docLen to length
set range of selection to {docLen, 0}
end tell
end tell

総レス数 1008
389 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★