このページではスクリプト作成時に使えるTipsを列挙します。
OPTION変数で多数のパラメータを受け渡す
{"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が起動している間他のスクリプでも)
var options = JSON.parse(OPTION);
var hoge = options.hoge;//hogehogeが代入される
var fuga = options.fuga;//fugafugaが代入される
を使えます。
IS_HTML="true";と#HTMLの使い分け
IS_HTML="true";はスクリプト本文の最後の行をHTMLとして表示します。
例:
IS_HTML="true";
var x;
x += "<html><body>";
x += "Hello World!";
x += "</body></html>";
x;
また、TARGETと分岐させることもできます。
例:
var x="<html><body>Hello World!</body></html>";
if(...){
IS_HTML="true";
x;
}else{
TARGET="copy";
x;
}
一方、#HTMLは"#HTML"の文字を除くスクリプト本文がそのままHTMLになります。
ソースコードがそのままHTMLになるため、装飾などを施す際にはこちらを使います。
ただし一行目で#HTMLを宣言する必要があり他のTARGETと処理を分岐させることはできません。
例:
1つのスクリプトで複数のTARGETに分岐させる
TARGETは編集画面右上のアイコンから変更できる他、スクリプト中で
TARGET="hoge";//hogeはopenin,copy,openurl,infoのいずれか
と指定することで上書きされます。また
を指定すると実行結果の表示を中断することができます。
デバックの方法
スクリプト編集画面上部の右向き三角形のアイコンをタップします。
新たに表示されるビューの
というボタンのうち、OUTでエラー内容が確認できます。
またOUT画面では変数を打ち込むとその内容が表示されます。
スクリプトを共有する
次の手順に従ってスクリプトをTinyURL化します。
スクリプト一覧画面で共有したいスクリプトを長押しします。
「スクリプトを実行...」から「スクリプト登録用TinyURL」を選択します。
URLがクリップボードにコピーされます。
コピーされたURLはTwitterやブログなどで自由に共有して下さい。
URLをタップすると目的のスクリプトがインストールされます。
※スクリプト登録用TinyURLはプリインストールされています。
※TinyURL化できるスクリプトの長さは登録用URLにしたとき約22000文字が上限のようです。上限を超えた場合、URLは正常にコピーされないのでDropboxなどにアップロードして共有して下さい。
よく使われるソースコードのサンプル
次の"ソースを取得する"スクリプトがかなりのスクリプトで使われています。
var url = TEXT;
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send(null);
var res =xhr.responseText;
resにソース文字列が代入されます。
応用例1.URLのTinyURL化
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の使用
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;
応用例3. DOM変換
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中"jQueryを使ったスクレイピング"
※scriptタグやiframeタグが含まれている場合、正常に動作しない場合があります。
その場合、resからこれらのタグを置換して除いて下さい。
jQueryの使い方
jQueryを使うことでスクレイピング時のDOM操作性が向上します。
参考:
jQuery 日本語リファレンス
内蔵されているjquery.jsを用いるには、IS_HTML="true";で組み立てたHTMLや#HTMLの場合
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を使う場合は
を指定します。
Twitter Bootstrapを使う場合は
<link rel="stylesheet" href="./bootstrap/css/bootstrap.css">
<script src="./jquery.js"></script>
<script src="./bootstrap/js/bootstrap.js"></script>
を指定します。
参考
ローカルファイルの参照
デバイスをiTunesにUSBで繋ぎMyScriptのファイル共有画面を開くとjquery.jsなどのファイルが見つかります。
スクリプトのdocumentはその位置に存在し、そこから相対パスでファイルを参照出来ます。
プリインストールされているjQuery、jQuery mobile、TwitterBootstrapの他、PCやMacから共有フォルダにファイルを入れることでcssファイルや画像ファイルなども参照が可能です。
使用例:
BrowserSelector2 – やっぱりSafariじゃないブラウザで開きたい | 代助のブログ
非同期処理
通信や位置情報の取得など、非同期で処理を実行したいときがあります。MyScriptsでは通常、非同期処理を待たずにスクリプトの実行を終了しますが、IS_ASYNC=trueが指定されると、非同期処理が完了するまでスクリプトの終了を待機します。ASYNC_DONE関数が呼び出されると、スクリプトの実行を終了します。
以下のサンプルでは、非同期で通信を実行しています。
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月17日 07:53