スクリプト作成におけるTips集

このページではスクリプト作成時に使えるTipsを列挙します。


OPTION変数で多数のパラメータを受け渡す

OPTION変数の基本的な使い方はHelloMyScriptsを参照のこと。
optionパラメータで渡せる値は1つですが、JSONと組み合わせることでいくらでも多くのパラメータを受け渡しできます。
参考:JavaScript Object Notation - Wikipedia
例えば
{"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と処理を分岐させることはできません。
例:
#HTML
<html>
<body>
Hello World!
</body>
</html>
 


1つのスクリプトで複数のTARGETに分岐させる


TARGETは編集画面右上のアイコンから変更できる他、スクリプト中で
TARGET="hoge";//hogeはopenin,copy,openurl,infoのいずれか
 
と指定することで上書きされます。また
TARGET = null;
 
を指定すると実行結果の表示を中断することができます。


デバックの方法

スクリプト編集画面上部の右向き三角形のアイコンをタップします。
新たに表示されるビューの
TEXT HTML OUT
というボタンのうち、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;
 
appsにアプリ群のデータが配列で代入されます。
参考:iTunes, App Store, iBookstore, and Mac App Store Affiliate Resources - Search API

応用例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の場合
<script src="./jquery.js"></script>
 
を指定します。その他の場合は以下の要領で用います。
内蔵のjqueryを使うサンプル をインポート
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を使う場合は
<link rel="stylesheet" href="./jqm/jquery.mobile.css">
<script src="./jquery.js"></script>
<script src="./jqm/jquery.mobile.js"></script>
 
を指定します。

Twitter Bootstrapを使う場合は
<link rel="stylesheet" href="./bootstrap/css/bootstrap.css">
<script src="./jquery.js"></script>
<script src="./bootstrap/js/bootstrap.js"></script>
 
を指定します。

参考
  • jQuery mobile
  • TwitteBootstrap

ローカルファイルの参照

デバイスを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);
 

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2013年02月17日 07:53