MyScripts @ WIKI
http://w.atwiki.jp/myscripts/
MyScripts @ WIKI
ja
2013-10-22T05:34:02+09:00
1382387642
-
スクリプト集・掲載ブログ
https://w.atwiki.jp/myscripts/pages/24.html
おおよそ掲載スクリプトの多い順で並べています。
掲載漏れ、修正箇所がある場合はご自由に編集して下さい。
**Unit Kay's Blog
ブログ:http://unitkay.com/category/myscripts/
MyEditor用スクリプト:http://unitkay.com/myeditor/#scripts_ja
MyScripts作者[[@unitkay>http://twitter.com/unitkay]] のブログ
**Scripts for MyScripts
http://hitoriblog.com/myscripts.html
[[@hitoriblog>http://twitter.com/hitoriblog]] さんのスクリプト集
TriendsBotSearch、jQueryを使ったスクレイピング、ギャル文字変換ほか
ブログ:http://hitoriblog.com/?cat=50
**代助のブログ | ガジェット大好きサラリーマンのブログ – iPhoneやiPad、Android、Kindleなど
http://daisukeblog.com/?s=MyScripts
[[@hondamarlboro>http://twitter.com/hondamarlboro]] さんのブログ
Clip2Mydict、Tweet2HTML 4 MyScripts、BookmarkletHelperほか
**スクリプト集 #MyScripts
http://barth0l0mew.trpg-circle.com/script%20of%20MyScripts/
[[@hashimotoryoh>http://twitter.com/hashimotoryoh]] さんのスクリプト集
【川柳】一句ツイートする、再生中の楽曲をツイート、縦書きツイートほか
ブログ(旧):http://barth0l0mew.blogspot.jp/search/label/MyScripts
ブログ(新):http://gomokuankake.com/category/myscripts/
**iPhoneの世界
http://iphone.uchi.in/
[[@corneliuspapa>http://twitter.com/corneliuspapa]] さんのブログ
挨拶ツイート、最寄駅メール、Quicklyほか
**Bokuript
http://dqfu.tumblr.com/Bokuript
[[@dqfu>http://twitter.com/dqfu]] さんのスクリプト集
mndks、MyShortcutsImport ほか
ブログ :http://dqfu.tumblr.com/tagged/myscripts
**スクリプト集 @a_i_t_a
http://dl.dropbox.com/s/my4rfi4k4o6i3ww/ScriptsInjQM.html
[[@a_i_t_a>http://twitter.com/a_i_t_a]] さんのスクリプト集
TweetLinker、GRLink、TwiSeaRSSほか
**Scripts
http://dl.dropbox.com/u/43815490/Page/MySc.html
[[@KantatoBETA>http://twitter.com/KantatoBETA]] さんのスクリプト集
StrExpander、CpHist、LibKTBETAほか
**W&R : Jazzと読書の日々
http://d.hatena.ne.jp/wineroses/searchdiary?word=MyScripts
[[@jazzzz2012>http://twitter.com/jazzzz2012]] さんのブログ
DarkRoom、MyURL、MyClipほか
**iVy Green
http://ivygrn.blogspot.jp/search/label/MyScripts
[[@yoridrill>http://twitter.com/yoridrill]] さんのブログ
GreenRoom、NowPlaying、メモリストほか
旧ブログ:http://ivygrn.tumblr.com/tagged/MyScripts
**forMyScripts
http://dl.dropbox.com/u/151393/toolbox/forMyScripts.html
[[@hals_pg>http://twitter.com/hals_pg]] さんのスクリプト集
ブックマークレット作成、Search it later、MS2ENほか
ブログ:http://halspg.wordpress.com/tag/myscripts/
**Happy-Go-Lucky
http://www.toshiya240.com/search/label/MyScripts
[[@toshiya240>http://twitter.com/toshiya240]] さんのブログ
GetTweetAsHtml、InsertTweetAsHtmlToDraftPad、DraftPad.jsほか
**GarretCafe
http://garretcafe.com/tag/myscripts
[[@Nu0hH>http://twitter.com/Nu0hH]] さんのブログ
SafariClapter、MyHtml、HtmlCounterほか
**stryhの日記 ~stryh/changelog
http://stryh.com/tag/myscripts/
[[@saita_ryouhei>http://twitter.com/saita_ryouhei]] さんのブログ
CreateShareHtml、ClipboardWatch、ClipboardUtilAnyほか
**iYutoのMaciPhone活用紀
http://iyuto.blog.fc2.com/?tag=MyScripts
[[@iYutoFC2>http://twitter.com/iYutoFC2]] さんのブログ
ScriptLauncer、Song2Tube、TweetMyApp
**MyScripts List
http://dl.dropbox.com/s/gzdq3j3xd7rqllt/index.html
[[@daifuku_fuyu>http://twitter.com/daifuku_fuyu]] さんのスクリプト集
iQuickLauncher、iQuickLauncher2、MemoStocker
**びば あっぷる
http://getcoin.ciao.jp/ossa/?s=myscripts
[[@luckycoinget>http://twitter.com/luckycoinget]] さんのブログ
BB2CとGraffitiPotで開く、Blackbirdpieに変換ほか
ブログ(該当ページ):http://luckycoinget.tumblr.com/post/19735343604
日本語へ翻訳&保存
**cykinda - YouTube
http://www.youtube.com/user/cykinda/videos?view=0
[[@cy_kinda>http://twitter.com/cy_kinda]] さんのスクリプト動画
ShareMyDropbox、InstantTweetURL
**Libing Support
http://libing-support.blogspot.jp/search?q=MyScripts
[[@tarunon>http://twitter.com/tarunon]] さんのブログ
Libing Bookmarklet
**あかめ女子のWebメモ
http://webmemo.biz/?s=MyScripts
[[@mk_mizuho>http://twitter.com/mk_mizuho]] さんのブログ
DllaterDirect
**記録
http://www.ekesete.net/log/?cat=34
[[@ichinomoto>http://twitter.com/ichinomoto]] さんのブログ
即Yahooロコ
**s_z_k_3's Scripts in Tumblr.com
http://szk3s-scripts-in.tumblr.com/tagged/MyScripts
[[@s_z_k_3>http://twitter.com/s_z_k_3]] さんのブログ
AroundEver
**不動産屋のラノベ読み
http://d.hatena.ne.jp/Lhankor_Mhy/searchdiary?word=MyScripts
Lhankor_Mhy さんのブログ
不動産屋向けスクリプト
**おまっちゃおの備忘録
http://mattyaphone.blog.fc2.com/blog-entry-62.html
[[@omattyao_yk>http://twitter.com/omattyao_yk]] さんのブログ
Open iNico
**くらげのChangeLog
http://d.hatena.ne.jp/ku__ra__ge/searchdiary?word=MyScripts
[[@ku__ra__ge>http://twitter.com/ku__ra__ge]] さんのブログ
bikkuri
**MyScript’s Room
http://happy081115.wordpress.com/myscripts-room/
[[@chimichan0914>http://twitter.com/chimichan0914]] さんのスクリプト集
TagMaker、MultiHtmlScriptほか
2013-10-22T05:34:02+09:00
1382387642
-
基本情報
https://w.atwiki.jp/myscripts/pages/27.html
**MyScripts(¥400)
http://itunes.apple.com/jp/app/myscripts/id492086539?mt=8
**MyScripts LE(無料)
http://itunes.apple.com/jp/app/myscripts-le/id556253271?mt=8
**MyScriptsサポートページ
http://unitkay.com/myscripts/
**MyScripts関連ツイート
最新情報はこちらをチェックして下さい。@unitkayがピックアップした情報をツイートしてます。
http://twilog.org/tweets.cgi?id=unitkay&word=myscripts
**MyScripts動画
http://www.youtube.com/results?search_query=%22myscripts%22
2013-10-22T05:32:57+09:00
1382387577
-
独自変数
https://w.atwiki.jp/myscripts/pages/34.html
独自変数の解説(アプリ内ヘルプより転載)と使用例を紹介します。
なおアクションの指定(参考:[[4つのアクション]])は、スクリプト編集画面右上の4つのボタンで指定する方法と、スクリプト本文でTARGET=の形で指定する方法がありますが、ここでは説明の便宜上後者の方法を用います。
#contents()
*スクリプト内で使用できる変数
**TEXT
クリップボード/URL内のパラメータ/Open Inで渡されたテキスト。
スクリプト処理用スクリプトの場合は、処理対象のスクリプト本文が入ります。
※クリップボード以外のものが指定されている時はそちらが優先されます。
例:コピーしたURLを開く
#highlight(javascript){{
TARGET = "openurl";
TEXT;
}}
**ENCTEXT
URLエンコード済みTEXT。
例:コピーした単語をGoogleで検索する
#highlight(javascript){{
TARGET = "openurl";
"https://www.google.co.jp/search?q="+ENCTEXT;
}}
**SONG
再生中の曲の情報。title/albumTitle/artistの各属性から取得します。
曲を再生していない場合、SONGがnullになります。
例:再生中の曲のタイトルを表示する
#highlight(javascript){{
TARGET = "info";
SONG.title;
}}
**ENCSONG
URLエンコード済みの再生中の曲の情報。title/albumTitle/artistの各属性から取得できます。曲を再生していない場合、ENCSONGがnullになります。
例:再生中の曲のタイトルをGoogleで検索する
#highlight(javascript){{
TARGET = "openurl";
"https://www.google.co.jp/search?q="+ENCSONG.title;
}}
**TARGET
このスクリプトに設定されたアクション。openin/copy/openurl/infoのいずれかです。値を変更すると、スクリプト実行後のアクションを変更できます。nullに設定すると、スクリプト実行後に何も行いません。
参考:[[4つのアクション]]
**IS_HTML
この変数をtrueに設定すると、処理結果をHTMLとしてアクションを実行します。別のアプリにはHTMLとして渡されます。また、デバッグ画面ではHTMLとして表示されます。
例:hogeと書かれたHTMLを表示する
#highlight(javascript){{
IS_HTML = "true";
TARGET = "info";
"<html><body>hoge</body></html>";
}}
例:hogeと書かれたHTMLを他のアプリで開く
#highlight(javascript){{
IS_HTML = "true";
TARGET = "openin";
"<html><body>hoge</body></html>";
}}
&aname(IS_ASYNC,option=nolink){}
**IS_ASYNC
この変数をtrueに設定すると、スクリプトで非同期処理を実行できます。非同期処理が完了したときに、ASYNC_DONE("<文字列>")を呼び出す必要があります。
例:Googleで"test"を検索した結果のソースを表示する
#highlight(javascript){{
IS_ASYNC=true;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) { // DONE
if (xhr.status === 200) { // OK
ASYNC_DONE(xhr.responseText);
}
}
};
xhr.open("GET","https://www.google.co.jp/search?q=test", true);
xhr.send(null);
}}
リダイレクトにより通常のソース取得で正常に取得できないページに対しても有効です。
**FILENAME
アクションがOpen Inの場合の出力ファイル名を指定します。他のアプリからOpen Inで起動された場合は、入力ファイル名があらかじめ設定されています。
例:ファイル名「ファイル」、本文が「テキスト」のtxtファイルを他のアプリに渡す
#highlight(javascript){{
TARGET = "openin";
FILENAME = "ファイル";
"テキスト";
}}
**CLIPBOARD
クリップボード内のテキスト。TEXT変数にURL内パラメータが設定されているときにクリップボードのテキストを利用したい場合に使用します。
**ENCCLIPBOARD
URLエンコード済みCLIPBOARD。
**IP_ADDRESS
デバイスのIPアドレス。WiFiのIPアドレスが3GのIPアドレスよりも優先されます。どちらのアドレスも取得できないときはnullになります。
例:通信可能ならOK、出来ないならNGを表示する
#highlight(javascript){{
TARGET = "info";
if(IP_ADRESS){
"OK";
}else{
"NG";
}
}}
**IS_BACKGROUND
バックグラウンドで実行中かどうかを取得します。
※MyScriptsを表示した状態ではfalse、他のアプリを表示した状態でクリップボード監視で実行させた時はtrueが返ります
例:バックグラウンドで実行中ならOK、そうでないならNGを表示する
#highlight(javascript){{
TARGET = "info";
if(IS_BACKGROUND){
"OK";
}else{
"NG";
}
}}
**SCRIPT_TITLE
スクリプト処理用のスクリプトを実行したときに、処理対象のスクリプトのタイトルを取得できます。
**SCRIPT_ENCTITLE
URLエンコード済みSCRIPT_TITLE。
参考:&link_anchor(#PROCESS_SCRIPT){#PROCESS_SCRIPT}
**SCRIPT_TARGET
スクリプト処理用のスクリプトを実行したときに、処理対象のスクリプトのアクションを取得できます。
参考:&link_anchor(#PROCESS_SCRIPT){#PROCESS_SCRIPT}
**OPTION
myscripts://run?option=URLエンコード済み文字列、またはmyscripts://listing?option=URLエンコード済み文字列で渡された文字列。この文字列はURLスキーム経由で一度設定されるとMyScriptsが生きている間有効になります。
**ENCOPTION
URLエンコード済みOPTION。
*スクリプト内で使用できる命令
**#IMPORT <スクリプト名>
スクリプトをインポートします。複数のインポート文を指定できます。1行につき1つのスクリプトを指定します。インポート文に指定されているスクリプトが最初にすべて実行されます。インポート文に指定されたスクリプト内のインポート文は無視されます。
※また、インポートされる側のスクリプトのアクションは無視されます
例:スクリプトAをスクリプトBでインポートする
スクリプトA
#highlight(javascript){{
var a = "hogehoge";
}}
スクリプトB
#highlight(javascript){{
#IMPORT スクリプトA
TARGET = "info";
a;//"hogehoge"
}}
**#LIB
コード補完機能にこのスクリプトの関数名だけを学習するように指示します。この命令が指定されていない場合、コード補完機能はスクリプト内のすべての単語を学習します。編集時にパフォーマンス上の問題があるときに、この命令を指定します。スクリプトの最初の行の先頭に指定する必要があります。
&aname(#PROCESS_SCRIPT,option=nolink){}
**#PROCESS_SCRIPT
スクリプト処理用のスクリプトとして宣言します。宣言すると、スクリプト編集画面のメニューから呼び出せるようになります。
※スクリプトの処理を行うには、処理される側のスクリプトをスクリプト一覧画面から長押しして「スクリプトを実行...」を選択し、#PROCESS_SCRIPTが指定されたスクリプト一覧の中から処理する側のスクリプトを選択します。
例:処理対象のスクリプトを複製する
#highlight(javascript){{
TARGET = "openurl";
#PROCESS_SCRIPT
"myscripts://add?title="+ SCRIPT_ENCTITLE + encodeURIComponent("のコピー") + ENCTEXT + "&target=" + SCRIPT_TARGET
}}
**#HTML
このスクリプトをHTMLファイルとして宣言します。宣言すると、スクリプトの内容がそのままHTMLとして出力されます。スクリプトの最初の行の先頭に指定する必要があります。
例:hogeと書かれたHTMLを表示する
#highlight(javascript){{
#HTML
<html>
<body>
hoge
</body>
</html>
}}
**COPY("<文字列>" [, <メッセージ>])
文字列をクリップボードにコピーします。コピー処理はスクリプト実行後に行われるため、この関数を複数回呼び出した場合は、最後の呼び出しのみが有効になります。メッセージを指定するとそのメッセージが文字列の代わりに表示されます。メッセージに""を指定すると、ダイアログ自体が表示されなくなります。
例:hogeという文字列をコピーしつつ[[MyEditorアプリ>https://itunes.apple.com/jp/app/myeditor/id575214004?mt=8]]
を開く
#highlight(javascript){{
COPY("hoge","");
TARGET = "openurl";
"myeditor:"
}}
**ASYNC_DONE("<文字列>")
IS_ASYNCをtrueに設定して非同期処理を実行した後にこの関数を呼び出すと、引数の文字列に対してアクションが実行されます。
参考:&link_anchor(IS_ASYNC){IS_ASYNC}
**SAVE_JSON("<キー>", obj)
指定したキーに関連付けてobjをJSONデータとして保存します。保存に成功するとtrue、失敗するとfalseが戻ります。保存データはスクリプト間で共通です。キーが同じ場合、データが上書きされるので注意してください。
※注:現バージョンではJSONデータが消失する場合があるため、一時的な使用目的を除き、残しておきたいデータはスクリプト本文に保存するなどして下さい。
例:スクリプトAでキーhogeに{"a":"b"}という連想配列を保存し、スクリプトBでキーhogeの内容を表示する
スクリプトA
#highlight(javascript){{
TARGET = "info";
SAVE_JSON("hoge",{"a":"b"});
"保存しました";
}}
スクリプトB
#highlight(javascript){{
TARGET = "info";
JSON.stringify(LOAD_JSON("hoge"))
}}
**LOAD_JSON("<キー>")
指定したキーに関連付けられたデータを読み込みます。データが無い場合はnullが戻ります。
**LOGOUT("<ログ>")
ログ出力を行います。出力されたログはデバッグ画面で確認できます。
※デバッグ画面とは編集画面の▷ボタンで表示される(またはTARGET="info";のスクリプトを実行して表示される)ビューを表示したあとTEXT|HTML|OUTと並んだボタンのOUTを押下して表示される画面です。
例:文字を結合してABCを表示するスクリプトでBまで繋げた時のaを調べる
#highlight(javascript){{
TARGET = "info";
var a="A";
a+="B";
LOGOUT(a);//デバッグ画面にABと表示
a+="C";
a;//ABC
}}
2013-06-18T22:30:34+09:00
1371562234
-
ローカルファイルの取り扱い
https://w.atwiki.jp/myscripts/pages/33.html
#contents()
**ローカルファイルの閲覧方法
HTMLビューのscriptタグからlocation.hrefでファイルを指定することでcssやjsファイルなどを閲覧出来ます。
[[jQueryMobileデモ をインポート>http://tinyurl.com/b2yd3dg]]
#highlight(html){{
#HTML
<script type="text/javascript" language="Javascript">location.href="jqm/demos/index.html"</script>
}}
XMLHttpRequestを使うとcssやjsファイルの他、JsonSotrageファイルやShortcutsファイルの中身も見ることができます。
[[JsonStorage確認 をインポート>http://tinyurl.com/aw8gd39]]
#highlight(javascript){{
TARGET = "info";
var url = "JsonStorage";
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send(null);
var res =xhr.responseText;
res;
}}
**ローカルファイルの位置
Dcuments
├Inbox
├Outbox
├bootstrap
│├css
││├bootstrap-responsive.css
││├bootstrap-responsive.min.css
││├bootstrap.css
││└bootstrap.min.css
│├img
││└...
│└js
│ ├bootstrap.js
│ └bootstrap.min.js
├jqm
│├demos
││├css
│││└...
││├docs
│││└...
││├js
│││└...
││└index.html
│├images
││└...
│├jquery.mobile.css
│├jquery.mobile.js
│├jquery.mobile.min.css
│├jquery.mobile.min.js
│├jquery.mobile.structure.css
│├jquery.mobile.structure.min.css
│├jquery.mobile.theme.css
│└jquery.mobile.theme.min.css
├JsonStorage(JSONデータが保存される)
├Shortcuts(スクリプトが保存される)
└jquery.js
2013-02-27T21:03:58+09:00
1361966638
-
問題点と対策案
https://w.atwiki.jp/myscripts/pages/32.html
実装されていない機能の次善策や不具合の対症療法を列挙します。(主に開発者向け)
#contents()
*callback用URLスキームがない
MyScriptsは他アプリに戻る機能は実装されていません。
対策として、戻り先のURLをスクリプト内で直接書き込みopenurlするか、OPTION変数を用いることで戻り先のURLを受け渡す方法があります。
*documentにiframeを書き込むとSafariで開かれる
例えば
#highlight(javascript){{
document.body.innerHTML="<iframe src='http://google.co.jp'>"
}}
という操作で起こる問題です。
iframeタグを除いた上でdocumentに埋め込んで下さい。
*documentに相対パスを指定したiframeを書き込むと「要求されたURLがこのサーバー上に見つかりませんでした」と表示される
例えば
#highlight(javascript){{
document.body.innerHTML="<iframe src='img.jpg'>"
}}
という操作で起こる問題です。
iframeタグを除いた上でdocumentに埋め込んで下さい。
*TinyURL化に失敗する
ソースコードが長過ぎるとTinyURL化でエラーが起こります。ソースコードを短くするか、Dropboxなどで共有して下さい。
*HTMLビューからSafariを開けない
HTMLビューでは、httpリンクは全てMyScripts上で開かれます。
Safariを開きたい場合、TEXTビューを使うか、TARGET="openurl";のスクリプトにURLを渡して下さい。
*JSONデータが消失する
スクリプト一覧画面のアクションボタンからJSONを含むデータをバックアップできます。
またJSONは現段階ではスクリプト間でデータを受け渡すために一時的に使うようにし、何度も参照するデータはスクリプトとして残して#PROCESS_SCRIPTで処理するか、他のアプリに保存してOpen inから「スクリプトを実行...」で処理するようにします。
*スクリプトが一覧画面で下のボタンが消失する
一覧画面で任意のスクリプトを長押ししてアクションメニューを表示して、そのメニューでキャンセルを選択して下さい。または、MyScriptsをマルチタスクから削除し再起動して下さい。
*編集画面のキャンセルボタンとタイトルエリアの間に空白が表示される
操作の上では問題ありません。そのまま使って下さい。
2013-02-24T23:10:05+09:00
1361715005
-
逆引きMyScripts
https://w.atwiki.jp/myscripts/pages/28.html
MyScripts を指先で覚えたい人向けのページです。
#contents()
**特定のブラウザでURLを開く
[[Libing で開く をインポート>http://tinyurl.com/bluqmrz]]
#highlight(javascript){{
// Libing の URL スキームを指定する
var scheme = "libhttp";
// URL の先頭の http 部分を置き換えて開く
TARGET = "openurl";
TEXT.replace(/^http/, scheme);
}}
[[Sleipnir で開く をインポート>http://tinyurl.com/dykbfo7]]
#highlight(javascript){{
// Sleipnir の URL スキームを指定する
var scheme = "sleipnirblue";
// URL の先頭の http 部分を置き換えて開く
TARGET = "openurl";
TEXT.replace(/^http/, scheme);
}}
要はブラウザの URL スキームさえわかれば機械的にできます。
**NowPlaying(再生中の曲情報)をコピーする
SONG という独自変数を使います。SONG は以下のような仕様です。
>SONG - 再生中の曲の情報。title/albumTitle/artistの各属性から取得できます。曲を再生していない場合、SONGがnullになります。
[[CopyNowPlaying をインポート>http://tinyurl.com/cno766d]]
#highlight(javascript){{
if (SONG === null) {
// 音楽が再生中でないとき
// ミュージックを開く
TARGET = "openurl";
"music://";
} else {
// 音楽が再生中のとき
// 曲情報をコピーする
alert("曲情報をコピーします");
TARGET = "copy";
SONG.title + " by " + SONG.artist;
}
}}
**コピー内容でGoogle検索する
URL 全体をエンコードするときは encodeURI、クエリ部分の一部をエンコードするときは encodeURIComponent を使います。
Google 検索するときなどは、後者を利用します。
[[GoogleSearch-1 をインポート>http://tinyurl.com/c3jxm3w]]
#highlight(javascript){{
TARGET = "openurl";
"https://www.google.co.jp/search?q=" + encodeURIComponent(TEXT);
}}
MyScripts には、独自変数をエンコードした ENC〜 変数が用意されています。
TEXT 変数に対しては、ENCTEXT 変数が該当します。
この変数を使用することで、GoogleSearch-1 は以下のように書き換えられます。
[[GoogleSearch-2 をインポート>http://tinyurl.com/cnpfnn2]]
#highlight(javascript){{
TARGET = "openurl";
"https://www.google.co.jp/search?q=" + ENCTEXT;
}}
以下蛇足ですが、はまりやすいポイントです。
encodeURIComponent が『!'()*』などをエンコードしてくれないために、まれに予期せぬ動作をすることがあります。
そのようなときは、多少強引ですが、以下のように力技でエンコードします。
[[GoogleSearch-3 をインポート>http://tinyurl.com/bn6jxck]]
#highlight(javascript){{
// ごり押しエンコード
function encURI(uri) {
var ch;
return encodeURIComponent(uri).replace(/[!'()*]/g, function() {
ch = RegExp.lastMatch;
return ch === "*" ? "%2A" : escape(ch);
});
}
TARGET = "openurl";
"https://www.google.co.jp/search?q=" + encURI(TEXT);
}}
2重エンコードするときなどは、この最後の方法が無難です。
**クリップボード制御
クリップボードのテキストを参照するときは、CLIPBOARD 変数を使います。
クリップボードにコピーするときは COPY を使います。
COPY は TARGET="copy"; と異なり、処理の途中でコピーできます。
[[calclip をインポート>http://tinyurl.com/c3oxgjh]]
#highlight(javascript){{
// クリップボードのテキストを取得
var formula = CLIPBOARD;
var result;
try {
// クリップボードの式を計算
result = eval(formula);
// 結果をコピー
COPY(result);
} catch (e) {
// クリップボードのテキストが計算式以外のとき
// エラーメッセージを表示
result = e.message;
}
TARGET = "info";
result;
}}
**HTMLを自動生成する
MyScripts では、TEXT 変数から入力データを受け取り、加工して、それを元に HTML を生成することができます。
多くの場合は #HTML で十分なのですが、IS_HTML = true; を使用した方が便利なこともあります。
ここではその開発の手順を示します。
1. #HTML でプロトタイプを作成します。最終的には不要になりますが、これがあるとメンテナンスしやすくなります。
[[grep - prototype をインポート>http://tinyurl.com/ahrayqw]]
#highlight(html){{
#HTML
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<title>grep</title>
<link rel="stylesheet" href="./jqm/jquery.mobile.css">
<script src="./jquery.js"></script>
<script src="./jqm/jquery.mobile.js"></script>
<script>
function append(lines) {
var $list = $('#grep-list');
for (var i = 0; i < lines.length; i++)
$('<li>').text(lines[i]).appendTo($list);
$list.listview('refresh');
}
onload = function() {
var lines = TEXT.split('\n');
append(lines);
}
</script>
</head>
<body>
<section data-role="page">
<header data-role="header" data-position="fixed">
<h1>grep</h1>
</header>
<div data-role="content">
<ul id="grep-list" data-role="listview" data-filter="true" data-filter-placeholder="Filter lines...">
</ul>
</div>
</section>
</body>
</html>
}}
2. 最終的に他のアプリで開くならば、jQuery Mobile や Twitter Bootstrap のファイルを外部参照するよう修正する
#highlight(html){{
<link rel="stylesheet" href="./jqm/jquery.mobile.css">
<script src="./jquery.js"></script>
<script src="./jqm/jquery.mobile.js"></script>
}}
上記の箇所を以下のように修正する。
#highlight(html){{
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css">
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
}}
3. 先頭の #HTML を除いた部分を選択し、コピーする
4. [[クリップボードのテキストを登録>http://hitoriblog.com/myscripts.html]] を使い、HTML を文字列化する
5. ファイル名などの指定や、HTML を修正する記述を行う
[[grep をインポート>http://tinyurl.com/a8tjjw6]]
#highlight(javascript){{
var html = "<!DOCTYPE html>\n<html>\n <head>\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,user-scalable=no\">\n <title>grep</title>\n <link rel=\"stylesheet\" href=\"http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css\">\n <script src=\"http://code.jquery.com/jquery-1.8.2.min.js\"></script>\n <script src=\"http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js\"></script>\n <script>\nfunction append(lines) {\n var $list = $('#grep-list');\n\n for (var i = 0; i < lines.length; i++)\n $('<li>').text(lines[i]).appendTo($list);\n\n $list.listview('refresh');\n}\n\nonload = function() {\n var lines = decodeURIComponent('";
html += ENCTEXT;
html += "').split('\\n');\n append(lines);\n}\n </script>\n </head>\n <body>\n <section data-role=\"page\">\n <header data-role=\"header\" data-position=\"fixed\">\n <h1>grep</h1>\n </header>\n <div data-role=\"content\">\n <ul id=\"grep-list\" data-role=\"listview\" data-filter=\"true\" data-filter-placeholder=\"Filter lines...\">\n </ul>\n </div>\n </section>\n </body>\n</html>";
FILENAME = "grep";
IS_HTML = true;
TARGET="openin";
html;
}}
openin することで、生成したHTMLを別アプリで開きます。HTML が使える別アプリとの連携にも、MyScripts は使えるわけです。
2013-02-18T23:23:37+09:00
1361197417
-
スクリプト作成におけるTips集
https://w.atwiki.jp/myscripts/pages/18.html
このページではスクリプト作成時に使えるTipsを列挙します。
#contents()
**OPTION変数で多数のパラメータを受け渡す
OPTION変数の基本的な使い方は[[HelloMyScripts]]を参照のこと。
optionパラメータで渡せる値は1つですが、JSONと組み合わせることでいくらでも多くのパラメータを受け渡しできます。
参考:[[JavaScript Object Notation - Wikipedia>http://ja.wikipedia.org/wiki/JavaScript_Object_Notation]]
例えば
{"hoge":"hogehoge","fuga":"fugafuga"}
をURLエンコードしoptionパラメータに指定した
myscripts://run?title=abc&option=%7b%22hoge%22%3a%22hogehoge%22%2c%22fuga%22%3a%22fugafuga%22%7d%0d%0a
を開くとabcという名前のスクリプト中で(またはMyScriptsが起動している間他のスクリプでも)
#highlight(javascript){{
var options = JSON.parse(OPTION);
var hoge = options.hoge;//hogehogeが代入される
var fuga = options.fuga;//fugafugaが代入される
}}
を使えます。
**IS_HTML="true";と#HTMLの使い分け
IS_HTML="true";はスクリプト本文の最後の行をHTMLとして表示します。
例:
#highlight(javascript){{
IS_HTML="true";
var x;
x += "<html><body>";
x += "Hello World!";
x += "</body></html>";
x;
}}
また、TARGETと分岐させることもできます。
例:
#highlight(javascript){{
var x="<html><body>Hello World!</body></html>";
if(...){
IS_HTML="true";
x;
}else{
TARGET="copy";
x;
}
}}
一方、#HTMLは"#HTML"の文字を除くスクリプト本文がそのままHTMLになります。
ソースコードがそのままHTMLになるため、装飾などを施す際にはこちらを使います。
ただし一行目で#HTMLを宣言する必要があり他のTARGETと処理を分岐させることはできません。
例:
#highlight(html){{
#HTML
<html>
<body>
Hello World!
</body>
</html>
}}
**1つのスクリプトで複数のTARGETに分岐させる
TARGETは編集画面右上のアイコンから変更できる他、スクリプト中で
#highlight(javascript){{
TARGET="hoge";//hogeはopenin,copy,openurl,infoのいずれか
}}
と指定することで上書きされます。また
#highlight(javascript){{
TARGET = null;
}}
を指定すると実行結果の表示を中断することができます。
**デバックの方法
スクリプト編集画面上部の右向き三角形のアイコンをタップします。
新たに表示されるビューの
|TEXT|HTML|OUT|
というボタンのうち、OUTでエラー内容が確認できます。
またOUT画面では変数を打ち込むとその内容が表示されます。
**スクリプトを共有する
次の手順に従ってスクリプトをTinyURL化します。
スクリプト一覧画面で共有したいスクリプトを長押しします。
「スクリプトを実行...」から「スクリプト登録用TinyURL」を選択します。
URLがクリップボードにコピーされます。
コピーされたURLはTwitterやブログなどで自由に共有して下さい。
URLをタップすると目的のスクリプトがインストールされます。
※スクリプト登録用TinyURLはプリインストールされています。
※TinyURL化できるスクリプトの長さは登録用URLにしたとき約22000文字が上限のようです。上限を超えた場合、URLは正常にコピーされないのでDropboxなどにアップロードして共有して下さい。
**よく使われるソースコードのサンプル
次の"ソースを取得する"スクリプトがかなりのスクリプトで使われています。
#highlight(javascript){{
var url = TEXT;
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send(null);
var res =xhr.responseText;
}}
resにソース文字列が代入されます。
応用例1.URLのTinyURL化
#highlight(javascript){{
var url = "http://tinyurl.com/api-create.php?url="+TEXT;
var req = new XMLHttpRequest();
req.open("GET", url , false);
req.send(null);
var res = req.responseText;
}}
resにTinyURL化されたURL文字列が代入されます。
応用例2.iTunes APIの使用
#highlight(javascript){{
var url = "http://itunes.apple.com/search?country=JP&entity=software&term="+encodeURIComponent(TEXT);
var req = new XMLHttpRequest();
req.open("GET",url,false);
req.send(null);
var res = req.responseText;
var apps=JSON.parse(res).results;
}}
appsにアプリ群のデータが配列で代入されます。
参考:[[iTunes, App Store, iBookstore, and Mac App Store Affiliate Resources - Search API>http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html]]
応用例3. DOM変換
#highlight(javascript){{
var url = TEXT;
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send(null);
var res =xhr.responseText;
document.innerHTML=res;
}}
とするとdocument.getElementsByTagNameなどが使えます。
参考:[[Scripts for MyScripts>http://hitoriblog.com/myscripts.html]]中"jQueryを使ったスクレイピング"
※scriptタグやiframeタグが含まれている場合、正常に動作しない場合があります。
その場合、resからこれらのタグを置換して除いて下さい。
**jQueryの使い方
jQueryを使うことでスクレイピング時のDOM操作性が向上します。
参考:[[jQuery 日本語リファレンス>http://semooh.jp/jquery/]]
内蔵されているjquery.jsを用いるには、IS_HTML="true";で組み立てたHTMLや#HTMLの場合
#highlight(html){{
<script src="./jquery.js"></script>
}}
を指定します。その他の場合は以下の要領で用います。
[[内蔵のjqueryを使うサンプル をインポート>http://tinyurl.com/8hlynq5]]
#highlight(javascript){{
try{
// jquery.jsが読み込まれているかどうかをチェックする
// 読み込まれていなければcatch文に飛ぶ
$;
// ここにメインの処理を書く
}catch(err){
// jquery.jsを読み込む
TARGET=null;
var jquery = document.createElement("script");
jquery.src = "./jquery.js";
jquery.type = "text/javascript";
document.body.appendChild(jquery);
// 自分自身の実行用リンクを書く
location.href="実行用リンク";
}
// 以降に必要に応じて関数を書く
}}
**jQuery mobileとTwitter Bootstrapの使い方
IS_HTML="true";で組み立てたHTMLや#HTML内でjQuery mobileとTwitter Bootstrapが使えます。
jQuery mobileを使う場合は
#highlight(html){{
<link rel="stylesheet" href="./jqm/jquery.mobile.css">
<script src="./jquery.js"></script>
<script src="./jqm/jquery.mobile.js"></script>
}}
を指定します。
Twitter Bootstrapを使う場合は
#highlight(html){{
<link rel="stylesheet" href="./bootstrap/css/bootstrap.css">
<script src="./jquery.js"></script>
<script src="./bootstrap/js/bootstrap.js"></script>
}}
を指定します。
参考
-jQuery mobile
[[jQuery Mobile: Demos and Documentation>http://jquerymobile.com/demos/1.2.0/]]
[[jQuery Mobile 1.1.0 日本語リファレンス>http://dev.screw-axis.com/doc/jquery_mobile/]]
-TwitteBootstrap
[[Bootstrap>http://twitter.github.com/bootstrap/]]
[[Twitter Bootstrapの使い方>http://greenapple-room.com/conc/user/TwitterBootstrap/bootstrap.html]]
**ローカルファイルの参照
デバイスをiTunesにUSBで繋ぎMyScriptのファイル共有画面を開くとjquery.jsなどのファイルが見つかります。
スクリプトのdocumentはその位置に存在し、そこから相対パスでファイルを参照出来ます。
プリインストールされているjQuery、jQuery mobile、TwitterBootstrapの他、PCやMacから共有フォルダにファイルを入れることでcssファイルや画像ファイルなども参照が可能です。
使用例:[[BrowserSelector2 – やっぱりSafariじゃないブラウザで開きたい | 代助のブログ>http://daisukeblog.com/?p=1833]]
**非同期処理
通信や位置情報の取得など、非同期で処理を実行したいときがあります。MyScriptsでは通常、非同期処理を待たずにスクリプトの実行を終了しますが、IS_ASYNC=trueが指定されると、非同期処理が完了するまでスクリプトの終了を待機します。ASYNC_DONE関数が呼び出されると、スクリプトの実行を終了します。
以下のサンプルでは、非同期で通信を実行しています。
#highlight(javascript){{
IS_ASYNC=true;
var acces_url = TEXT;
var xhr = new XMLHttpRequest();
xhr.open("GET", acces_url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200){
ASYNC_DONE(xhr.responseText);
}
}
xhr.send(null);
}}
2013-02-17T07:53:31+09:00
1361055211
-
MyScriptsの基本
https://w.atwiki.jp/myscripts/pages/25.html
**[iOS]神ツールを作るための神アプリ、MyScriptsがかなり便利 | ひとりぶろぐ
http://hitoriblog.com/?p=5612
[[@hitoriblog>http://twitter.com/hitoriblog]] さんによるアプリ紹介
**[iOS]第1回 JavaScript実行開発環境MyScriptsの魅力を全力で伝えてみる | ひとりぶろぐ
http://hitoriblog.com/?p=5676
[[@hitoriblog>http://twitter.com/hitoriblog]] さんによるアプリ紹介
**IAMASのGeekLabでMyScriptsのことを話してきました | ひとりぶろぐ
http://hitoriblog.com/?p=6848
[[@hitoriblog>http://twitter.com/hitoriblog]] さんによる詳しいプレゼン資料が掲載されています
**Teachme
[[バックグラウンド監視>>https://teachme.jp/contents/9635]]
[[通知センターからの起動>>https://teachme.jp/contents/9536]]
[[スクリプトをSpotlightから検索する方法>>https://teachme.jp/contents/9484]]
**MyScripts@WIKI内
[[スクリプトの起動方法]]
[[デフォルトスクリプトの使い方]]
[[4つのアクション]]
2013-02-17T06:21:11+09:00
1361049671
-
4つのアクション
https://w.atwiki.jp/myscripts/pages/31.html
スクリプト一覧でタイトルの左に表示される絵文字は処理したテキストを用いてどのようなアクションを行うかを表します。
このページでは[[スクリプトの起動方法]]で紹介されている方法でスクリプトを起動した後、各アクションで何が出来るかを説明します。
#contents()
*4つのアクション
**iPhoneアイコン/openin
他のアプリを選択する画面が出るので好きなアプリを選びます。
処理されたテキストを選択したアプリで開けます(拡張子は.txt)
※ファイルの指定はスクリプト中FILENAME変数に値を代入します。
**メモアイコン/copy
クリップボードの内容が処理されたテキストに書き換えられます。
好きなアプリでペーストして使います。
※バックグラウンド監視をしている時は、他アプリからMyScritsに移動することなくクリップボードの中身が書き換えられます。
**雷アイコン/openurl
テキストを処理して得られるURLを開きます
※http://〜の形のURLはSafariで開かれます
**!標識アイコン/info
処理結果を画面に表示します
**4つのアクションを試す
次のスクリプト達のソースコードは全て同じ(このwikiのURL)
#highlight(javascript){{
"http://www51.atwiki.jp/myscripts/"
}}
でアクションのみボタンで変えています。
それぞれのアクションでどのような結果になるか試してみましょう。
[[MyScriptsAtWiki-openin をインポート>http://tinyurl.com/ceeudfp]]
[[MyScriptsAtWiki-copy をインポート>http://tinyurl.com/d35zafr]]
[[MyScriptsAtWiki-openurl をインポート>http://tinyurl.com/dynqmw6]]
[[MyScriptsAtWiki-info をインポート>http://tinyurl.com/bwzj7em]]
これらはインポートした後、スクリプト一覧画面からタップすることで実行出来ます。
*アクションはスクリプト中で書き換えられる
アクションは編集画面右上の4つのボタンで切り替える他、スクリプト本文で指定することもできます。
例えばアクションをopeninに指定したい場合、
#highlight(javascript){{
TARGET = "openin";
}}
とTAEGET変数に文字列"openin"を代入することでアクションを変更できます。
ボタンとスクリプト本文で別々のアクションを指定した場合、スクリプト本文のTARGET指定が優先されます。
誤って4つのボタンを押してアクションが変更されてしまうのを防いだり、if文で分岐させてアクションを変更する場合などに用います。
*もう1つのアクションTARGET = null;
#highlight(javascript){{
TARGET = null;
}}
を指定すると処理されたテキストに対して何も行わせないことが可能です。
COPY関数を使う場合や、alert()ダイアログだけ表示させたいときなどに用います。
2013-02-17T06:19:29+09:00
1361049569
-
スクリプトの起動方法
https://w.atwiki.jp/myscripts/pages/30.html
スクリプトを起動する方法は多岐に渡り、用途によって柔軟に対応できます。
#contents()
**スクリプト一覧画面を目的のスクリプトをタップ
最も単純な起動方法で、多くのスクリプトはこの方法で起動します。
テキストを処理するスクリプトの場合、対象文字列はクリップボードの文字列です。
**URLスキームからの起動
myscripts://run?title=TITLE
の形のURLスキームによって既存のスクリプトを外部から起動出来ます。
テキストを処理するスクリプトの場合、対象文字列はクリップボードの文字列です。
このURLスキームはスクリプト一覧画面で対象スクリプトを長押しし、「リンクを作成」→「スクリプト実行用(クリップボード)」を選択することで取得できます。
***通知センターからの起動(MyShortcuts)
myscripts://run?title=TITLE
の形のURLスキームをMyShortcutsアプリに登録することで通知センターから起動出来ます。
参照:[[MyScriptsの基本「通知センターからの起動」 - Teachme MyScripts MyShortcuts>https://teachme.jp/contents/9536]]
***ホーム画面からの起動(Touch Icon Creator)
myscripts://run?title=TITLE
の形のURLスキームをTouch Icon Creatorアプリに登録することでホーム画面から起動出来ます。
参照:[[スクリプトをSpotlightから検索する方法 - Teachme MyScripts>https://teachme.jp/contents/9484]]
**URLスキームからの起動(テキスト指定)
myscripts://run?title=TITLE&text=TEXT
の形のURLスキームによってテキストを指定しつつ既存のスクリプトを外部から起動出来ます。
文字列を処理するスクリプトの場合、対象文字列はTEXTで指定された文字列です。
このURLスキームはスクリプト一覧画面で対象スクリプトを長押しし、「リンクを作成」→「スクリプト実行用(パラメータ)」を選択することで取得できます。
取得したURLスキームの中で<TEXT>の部分は起動元のアプリに従って書き換えます。
例えば検索ハブアプリで入力したテキストをスクリプトに渡したい場合
myscripts://run?title=TITLE&text=_Q_
と書き換えます。
**バックグラウンド監視
設定.appで通知→MyScriptsと進み通知センターをオンにしておきます。(通知のスタイルはバナー通知が良いでしょう。)
スクリプト一覧画面 で目的のスクリプトの右にあるチェックボックスをオンにします。
他のアプリで文をコピーするとコピーされたテキストの処理結果が通知センターに表示されます。
アクションがcopyであるスクリプト(アイコンがメモの絵文字)のときはクリップボードの内容が処理されるのでそのままペーストします。
その他のアクションであるスクリプトはバナー通知をタップすることでMyScriptsに画面が移行し、目的のスクリプトが起動します。
参照:[[MyScriptsの基本「バックグラウンド監視」 - Teachme MyScripts>https://teachme.jp/contents/9635]]
**外部からのopenin
中身がテキストであるファイル(txt, js, htmlなど)はOpen inによっても処理出来ます。
まず他のアプリで目的のテキストファイルを選択し、Open in(アプリによっては「共有」、「...で開く」などの名前)を選択します。
メニューからMyScriptsを選択するとMyScriptsに画面が移り「テキストを処理します」のメニューが現れます。
「スクリプトを実行...」を選択し、実行するスクリプトを選ぶと、元のテキストファイルが選んだスクリプトに従って処理されます。
**スクリプトを処理するスクリプトの起動
スクリプト一覧画面で処理対象のスクリプトを長押しします。
メニューから「スクリプトを実行...」を選択します。
スクリプトを処理するスクリプト(#PROCESS_SCRIPTがソースコードに含まれる)の一覧が表示されるので選択します。
処理対象のスクリプトのタイトルや本文が、選択したスクリプトによって処理されます。
2013-02-17T00:41:28+09:00
1361029288