タグ内のタグにアクセスする

タグ内のタグにアクセスする


obj = IE.document.getElementByIdなどでオブジェクトを取得
obj= obj.getElementsByTagName

タグの中にあるタグの情報にアクセスする

HTMLのタグは、タグの中にタグを記述することができます。例えば以下のような構造だとします。[Webページはこちら]

<div id="MainText">
 <p>Hello Boys</p>
 <p>And how's going Girls</p>
 <p>My name is Andy. Nice to meet you.</p>
</div>

上記はタグの中にタグがある「入れ子」という構造になっています。getElementsByTagNameでpを取得することもできますが、
まずはdiv(MainText)から取得して、その子であるpを取得する手法を説明します。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0016/")
REPEAT
  SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

obj  = IE.document.getElementByID("MainText")
objP = obj.getElementsByTagName("p")

FOR A = 0 TO (objP.length - 1)
  PRINT (A+1) + "番目のp:" + objP.item(A).innerText
NEXT

親子のタグが複数ある場合でも大丈夫

最初から親のタグとその中にある子タグが分かっている場合は、範囲を限定しながら取得することができます

先ほどのサンプルでは、アクセスしたページの最初のdiv要素しか取得していません。
全てのdivタグの中にあるpを取得するプログラムは下記のようになります。

この投稿の続きを読む »

タグ

2013年2月24日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

指定したタグの数を取得する

指定したタグの数を取得する


obj = IE.document.getElementsByTagName(タグ名)
obj.length

指定したタグの数を取得する

例えば以下の様な構造のWebページがあったとします。h1、h4、div、pで構成されています。

<h1>Hello H1</h1>
<div id="mainCentric">
<h4>Yes! This is a pen.</h4>
<h4>No! No! No! This is not a pencil.</h4>
<p>Get some objects!</p>
<p>Then you go home!</p>
</div>

getElementsByTagNameでタグ名を指定することで該当のオブジェクトを取得できますので、それに対してlengthを実行することでタグ数が分かります。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0013/")
REPEAT
  SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

pTag = IE.document.getElementsByTagName("h4")
PRINT pTag.length

pタグの数を取得する

上記のサンプルではh4タグは2箇所出てきますので、結果は「2」となります。

次にpタグの要素数を調べてみましょう。
pタグは最初にお見せしたHTML以外の箇所でも使われているので、多くの数が出るでしょう。
スクリプトは下記のようになります。

この投稿の続きを読む »

タグ

2013年1月19日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

HASHTBL

HASHTBL

連想配列を宣言する
・HASHTBL 変数 = HASH_CASECARE
・HASHTBL 変数 = HASH_SORT
・変数[キー, HASH_EXISTS]
・変数[キー, HASH_REMOVE]
・変数[順列番号, HASH_KEY]
・変数[順列番号, HASH_VAL]
・変数 = HASH_REMOVEALL

・HASH_CASECARE・・・大文字小文字を区別する(デフォルト区別無し)
・HASH_SORT・・・順列で呼び出す際にキーがソートされている
・HASH_EXISTS・・・キーが存在する場合Trueを返す
・HASH_REMOVE・・・キー、値を削除する。成功時にはTrueを返す
・HASH_KEY・・・キーを返す
・HASH_VAL・・・値を返す
・HASH_REMOVEALL・・・中身をクリアする

連想配列とは何か

配列は通常、キーに数字を指定します。
連想配列とは、そのキーが数字ではなく、任意の文字列が利用できるものです。
たとえばARRAY[0]、ARRAY[1]としていたものが
ARRAY["NAME"]、ARRAY["TEL"]として値を取り扱えるようになるのです。

//連想配列MYARRAYを宣言、大文字小文字は区別し、ソートする
HASHTBL MYARRAY = HASH_CASECARE or HASH_SORT

//値の代入
MYARRAY["NAME"] = "山本山太郎"
MYARRAY["TEL"] = "090-9999-77777"

//値の呼び出し
PRINT MYARRAY["NAME"]
PRINT MYARRAY["TEL"]

//キーが存在するか
PRINT MYARRAY["ONAMAE", HASH_EXISTS]
PRINT MYARRAY["NAME", HASH_EXISTS]

//キーNAMEを削除
PRINT MYARRAY["NAME", HASH_REMOVE]
PRINT MYARRAY["NAME"]

値とキーをセットで考える際に便利

配列はキーが数字なので、意味はそれ以上もそれ以下もありません。
しかし、連想配列は文字列をキーに取れるので、ある値が格納されているキーに
意味を持たせることができます。
例えば人の名前を変数に格納する際に、その人たちの役職をキーにすると、
人名と役割のセットが出来上がります。
以下のスクリプトで見てみましょう。

この投稿の続きを読む »

タグ

2012年9月20日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

IE.document.imagesから取得できる画像の情報

IE.document.imagesから画像の情報取得が行えます

ページ内画像数
画像数
IE.document.images.length
画像のオブジェクト(0からの数値を指定)
画像ファイル名
IE.document.images[0].nameProp
画像URL
IE.document.images[0].src
プロトコル
IE.document.images[0].protocol
ページ内タグ位置
IE.document.images[0].sourceIndex
ALT属性
IE.document.images[0].alt
TITLE属性
IE.document.images[0].title
枠線
IE.document.images[0].border
class
IE.document.images[0].class
id
IE.document.images[0].id
name
IE.document.images[0].name
ユニークID
IE.document.images[0].uniqueID
高さ
IE.document.images[0].height
横幅
IE.document.images[0].width
読込完了
IE.document.images[0].complete

というわけで、
具体的にスクリプトを実行させて、結果を見てみましょう。
実行時のイメージ動画は下記の通りです。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0003/")

REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

PRINT "■ページ内画像総数:" + IE.document.images.length
FOR A = 0 TO (IE.document.images.length-1)
 PRINT "  ▼画像" + (A+1)
 PRINT "  画像ファイル名:" + IE.document.images[A].nameProp
 PRINT "  画像URL:" + IE.document.images[A].src
 PRINT "  プロトコル:" + IE.document.images[A].protocol
 PRINT "  ページ内タグ位置:" + IE.document.images[A].sourceIndex
 PRINT "  ALT属性:" + IE.document.images[A].alt
 PRINT "  TITLE属性:" + IE.document.images[A].title
 PRINT "  枠線:" + IE.document.images[A].border
 PRINT "  class:" + IE.document.images[A].className
 PRINT "  id:" + IE.document.images[A].id
 PRINT "  name:" + IE.document.images[A].name
 PRINT "  ユニークID:" + IE.document.images[A].uniqueID
 PRINT "  高さ:" + IE.document.images[A].height
 PRINT "  横幅:" + IE.document.images[A].width
 PRINT "  読込状況:" + IE.document.images[A].complete
 PRINT "  -----"
NEXT

指定画像が出てきたらメッセージを出す

それでは、画像オブジェクトの情報を読み込みながら、条件分岐をして見ましょう。
ページにアクセスしていき、指定画像が出現したらメッセージを出します。
スクリプトは以下の通りです。
実行時のイメージ動画は下記の通りです。

この投稿の続きを読む »

タグ

2012年7月22日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

script0009

タグ

2012年6月6日 | コメントは受け付けていません。 |

カテゴリー:ツール

LENGTH

LENGTH関数

文字列、配列の数を調べる
戻値 = LENGTH(対象)
バイト数を調べる場合はLENGTHB関数

引数

対象・・・数を調べたい文字列や配列

戻値

調べた数


文字列と配列の数を数える

STR = "これは何文字で構成されるでしょうか。Please count!"
MSGBOX("文字数:" + LENGTH(STR))
DIM ARRAY[3]
ARRAY[0] = "これは"
ARRAY[1] = "配列を"
ARRAY[2] = "数える"
ARRAY[3] = "テスト"
MSGBOX("配列数:" + LENGTH(ARRAY))

文字を1文字1文字抽出する

LENGTH関数で文字数を数えることができますので、
1文字1文字抽出してみます。
下記のサンプルでは「テスト」という文字列を1つ1つ抽出し、並べるので



と出力されるようになります。 ポイントはLENGTH関数とFORループによる繰り返しです。

この投稿の続きを読む »

タグ

2012年4月26日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

文字列を数える

文字列を数える関数です

LENGTH(文字列)

文字列
対象となる文字列
引数
文字列: 数える文字列 (もしくは配列変数)
戻値
文字数 (配列変数時は配列サイズを返す)
※ バイト処理の場合は LENGTHB

字列の文字数を取得できます。
COPY関数を利用する時に、
コピーする文字数を算出するために利用されることが多いです。

文字数取得するサンプル
//「22」が表示されます
mojiretu = "UWSCのサンプルを有効活用するアカサタナハ"
NUM = LENGTH(mojiretu)
PRINT NUM

また、配列サイズからFORの回数を取得するために利用することもあります。
これにより配列数分繰返しを行えます。

配列のサイズを取得する
//「6」が表示されます
HASHTBL A

A["ア"] = 1
A["カ"] = 3
A["サ"] = 5
A["タ"] = 4
A["ナ"] = 2
A["ハ"] = 9

PRINT LENGTH(A)

タグ

2012年3月20日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

文字列のコピー

文字列の一部をコピーする関数です

COPY(文字列,開始位置,コピーする文字数)

文字列
対象となる文字列
開始位置
コピーの開始位置を先頭からの文字数で指定
コピーする文字数
何文字目までコピーするかを指定

れによって、文字列の任意の部分を取得できます。
※ バイト処理の場合は COPYB です。
また、POS関数LENGTH関数と連動させて、利用されることが多いです。
EXCEL関数を多用される方には、利用シーンが沢山見つかるでしょう。

名前だけを取得するサンプル
//常に姓と名の間にスペースがある前提
mojiretu = "山田 まりお"
STR = COPY(mojiretu,POS(" ",mojiretu)+1,LENGTH(mojiretu))
PRINT STR

タグ

2012年3月18日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

このページの先頭へ