Navigate

URLまたは絶対パスで指定されたファイルを開きます。

構文
InternetExplorer.Navigate( url, [Flags, TargetFrameName, PostData, Headers] )
引数
url
文字列を表示するリソースのURL
Flags
ウィンドウの詳細設定
1($1)
新しいウィンドウで開く
2048($800)
新しいタブで開く
TargetFrameName
ウィンドウの表示設定
_blank
新規のウィンドウに表示
_self
現在のフレーム(ウィンドウ)に表示
_parent
親フレームに表示
_top
フレーム分割を解除してウィンドウ全体に表示
フレーム名、ウィンドウ名
任意のフレーム(ウィンドウ)に表示
PostData
POSTの送信先へこちらで設定したデータを送信します。ENCODEでバイト配列の型(ANSI)に変換した文字列を「名前=値&名前=値...」の形式で指定。
Headers
HTTPヘッダーに送信するデータ設定。PostDataを渡すときは「Content-Type: application/x-www-form-urlencoded」を指定
戻値

プログラム実行例

Yahoo!ファイナンスから米ドル・ユーロ・豪ドルのレートを取得

IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://info.finance.yahoo.co.jp/fx/") BusyWait(IE) // ループを抜ける用のフラグ PUBLIC flg = FALSE // ESCキーを入力でloopBreak関数を実行 SETHOTKEY(VK_ESC, , "loopBreak") REPEAT usd = IE.document.getElementById("USDJPY_top_bid").innerText eur = IE.document.getElementById("EURJPY_top_bid").innerText aud = IE.document.getElementById("AUDJPY_top_bid").innerText msg = "米ドル/円<#TAB>" + usd + "<#CR>" + _ "ユーロ/円<#TAB>" + eur + "<#CR>" + _ "豪ドル/円<#TAB>" + aud + "<#CR>" + _ "ESCで終了" FUKIDASI(msg) SLEEP(0.01) UNTIL flg = TRUE IE.Quit PROCEDURE loopBreak() flg = TRUE FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND

Googleでの検索結果を取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://google.com") BusyWait(IE) IESETDATA(IE, INPUT("検索ワードを入力"), "q") IESETDATA(IE, TRUE, "btnK") BusyWait(IE) DIM elements = IE.document.getElementsByClassName("rc") FOR element IN elements PRINT element.getElementsByClassName("LC20lb").Item(0).textContent PRINT element.getElementsByClassName("s").Item(0).textContent PRINT "----------" NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // interval : 時間単位(yyyy︰年、m︰月、d︰日) // date1 : 日時1 // date2 : 日時2 // 【戻値】 // date2からdate1を引いた日数を求めます。 ////////////////////////////////////////////////// FUNCTION dateDiff(interval, date1, date2) DIM y1, y2, m1, m2, d1, d2, d SELECT interval CASE "yyyy" GETTIME(0, date1) y1 = G_TIME_YY GETTIME(0, date2) y2 = G_TIME_YY d = y2 - y1 CASE "m" GETTIME(0, date1) y1 = G_TIME_YY m1 = G_TIME_MM GETTIME(0, date2) y2 = G_TIME_YY m2 = G_TIME_MM d = (y2 - y1) * 12 + m2 - m1 CASE "d" d1 = GETTIME(0, date1) d2 = GETTIME(0, date2) d = (d2 - d1) / 86400 SELEND RESULT = d FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND ////////////////////////////////////////////////// // 【引数】 // 数値 : GETTIMEで取得した曜日の番号(G_TIME_WW=0:日曜….6:土曜) // フォーマット : 以下のアルファベットは数値で指定した対応する曜日に置き換えられます。(aaa : 日〜土、aaaa : 日曜日〜土曜日、ddd : Sun〜Sat、dddd : Sunday〜Saturday) // 【戻値】 // 数値をフォーマットした文字列を返します。 ////////////////////////////////////////////////// FUNCTION getWeekdayName(num, format = "aaa") DIM re = CREATEOLEOBJ("VBScript.RegExp") DIM aaa[] = "日", "月", "火", "水", "木", "金", "土"; DIM aaaa[] = "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"; DIM ddd[] = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"; DIM dddd[] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; match = reExecute(format, "(a|d)+") type = match.Item(0).Value RESULT = reReplace(format, EVAL(type + "[" + num + "]"), type) FEND ////////////////////////////////////////////////// // 【引数】 // シリアル値 : 時間を表すシリアル値を指定 // 【戻値】 // 例)0…00、0.5…12、1.0…24 ////////////////////////////////////////////////// FUNCTION Hour(serial) RESULT = REPLACE(FORMAT(INT(serial * 24), 2), " ", "0") FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND ////////////////////////////////////////////////// // 【引数】 // str1 : 置換される文字列 // str2 : 置換後の文字列 // Pattern : 置換する文字列のパターン // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現置換後の文字列 ////////////////////////////////////////////////// FUNCTION reReplace(str1, str2, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Replace(str1, str2) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // inputs : 繰り返す文字列 // multiplier : inputsを繰り返す回数 // 【戻値】 // inputsをmultiplier回を繰り返した文字列を返します ////////////////////////////////////////////////// FUNCTION strRepeat(inputs, multiplier) DIM res = "" FOR n = 1 TO multiplier res = res + inputs NEXT RESULT = res FEND ////////////////////////////////////////////////// // 【引数】 // serial : シリアル値 // format : フォーマット // 【戻値】 // 数値を表示書式に基づいて変換した文字列 ////////////////////////////////////////////////// FUNCTION text(serial, format) HASHTBL startDate startDate["明治"] = "1868/01/25" startDate["大正"] = "1912/07/30" startDate["昭和"] = "1926/12/25" startDate["平成"] = "1989/01/08" startDate["令和"] = "2019/05/01" DIM baseDate = "1899/12/30" SELECT TRUE CASE reTest(format, "\[h+\]") Matches = reExecute(format, "\[(h+)\]") RESULT = text(Hour(serial), strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "^h+$") Matches = reExecute(format, "^(h+)$") RESULT = text(Hour(serial) MOD 24, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "\[m+\]") Matches = reExecute(format, "\[(m+)\]") RESULT = text(serial * 1440, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE format = "m" GETTIME(serial, baseDate) RESULT = text(G_TIME_MM, "0") CASE format = "mm" GETTIME(serial, baseDate) RESULT = G_TIME_MM2 CASE format = "n" GETTIME(serial, baseDate) RESULT = G_TIME_NN CASE format = "nn" GETTIME(serial, baseDate) RESULT = G_TIME_NN2 CASE format = "s" GETTIME(serial, baseDate) RESULT = text(G_TIME_SS, "0") CASE format = "ss" GETTIME(serial, baseDate) RESULT = G_TIME_SS2 CASE format = "yyyy" GETTIME(serial, baseDate) RESULT = G_TIME_YY4 CASE format = "yy" GETTIME(serial, baseDate) RESULT = COPY(G_TIME_YY4, 3, 2) CASE format = "e" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 2018 CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1988 CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1925 CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1911 CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1867 SELEND CASE format = "ee" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 2018, "00") CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1988, "00") CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1925, "00") CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1911, "00") CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1867, "00") SELEND CASE format = "g" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "R" CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "H" CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "S" CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "T" CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "M" SELEND CASE format = "gg" RESULT = COPY(text(serial, "ggg"), 1, 1) CASE format = "ggg" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "令和" CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "平成" CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "昭和" CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "大正" CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "明治" SELEND CASE format = "mmmmm" RESULT = COPY(text(serial, "mmmm"), 1, 1) CASE format = "mmmm" SELECT text(serial, "m") CASE 1; RESULT = "January" CASE 2; RESULT = "February" CASE 3; RESULT = "March" CASE 4; RESULT = "April" CASE 5; RESULT = "May" CASE 6; RESULT = "June" CASE 7; RESULT = "July" CASE 8; RESULT = "August" CASE 9; RESULT = "September" CASE 10; RESULT = "October" CASE 11; RESULT = "November" CASE 12; RESULT = "December" SELEND CASE format = "mmm" RESULT = COPY(text(serial, "mmmm"), 1, 3) CASE format = "dd" GETTIME(serial, baseDate) RESULT = text(G_TIME_DD2, "00") CASE format = "d" GETTIME(serial, baseDate) RESULT = text(G_TIME_DD, "0") CASE format = "aaaa" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "aaaa") CASE format = "aaa" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "aaa") CASE format = "dddd" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "dddd") CASE format = "ddd" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "ddd") CASE reTest(format, "(0+\.?0+)?%") Matches = reExecute(format, "(0+\.?0+)?%") RESULT = text(serial * 100, Matches.Item(0).SubMatches(0)) + "%" CASE reTest(format, "^\[DBNum\d{1,4}\](.*?)$") Matches = reExecute(format, "^\[DBNum(\d{1,4})\](.*?)$") SELECT Matches.Item(0).SubMatches(0) CASE 1 CASE 2 CASE 3 RESULT = STRCONV(text(serial, Matches.Item(0).SubMatches(1)), SC_FULLWIDTH) CASE 4 SELEND CASE reTest(format, "^(.*?)(AM\/PM|am\/pm|A\/P|a\/p)(.*?)$") Matches = reExecute(format, "^(.*?)(AM\/PM|am\/pm|A\/P|a\/p)(.*?)$") res = "" WITH Matches.Item(0) res = text(serial, .SubMatches(0)) + .SubMatches(1) + text(serial, .SubMatches(2)) ENDWITH RESULT = res CASE reTest(format, "([^ymdagehns]{0,})?(([ymdagehns])\3{0,})([^ymdagehns]+)?") Matches = reExecute(format, "([^ymdagehns]{0,})?(([ymdagehns])\3{0,})([^ymdagehns]+)?") FOR n = 0 TO Matches.Count - 1 IF n = 0 THEN res = Matches.Item(n).SubMatches(0) NEXT FOR n = 0 TO Matches.Count - 1 WITH Matches.Item(n) res = res + text(serial, .SubMatches(1)) + .SubMatches(3) ENDWITH NEXT RESULT = res CASE reTest(format, "(0+)\.?(0+)?") AND UBound(SPLIT(format, ".")) <= 1 Matches = reExecute(format, "(0+)\.?(0+)?") len1 = LENGTH(Matches.Item(0).SubMatches(0)) len2 = LENGTH(Matches.Item(0).SubMatches(1)) DIM arr[] = LENGTH(INT(serial)), len1 IFB POS(".", format) THEN RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX) + len2 + 1, len2), " ", "0") ELSE RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX)), " ", "0") ENDIF SELEND FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

内部リンクを取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com") BusyWait(IE) DIM links[-1] FOR n = 0 TO IE.document.links.length - 1 arrayPush(links, IE.document.links[n].href) NEXT arrayFilter(links, "POS(<#DBL>" + IE.document.domain + "<#DBL>, %val%)") FOR item IN links PRINT item NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

外部リンクを取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com") BusyWait(IE) DIM links[-1] FOR n = 0 TO IE.document.links.length - 1 arrayPush(links, IE.document.links[n].href) NEXT arrayFilter(links, "!POS(<#DBL>" + IE.document.domain + "<#DBL>, %val%)") FOR item IN links PRINT item NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

Yahoo! JAPANトップページのメニューを取得

IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://yahoo.co.jp") BusyWait(IE) DIM element = IE.document.getElementById("ToolList") DIM elements = element.getElementsByTagName("li") FOR element IN elements PRINT element.textContent NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // interval : 時間単位(yyyy︰年、m︰月、d︰日) // date1 : 日時1 // date2 : 日時2 // 【戻値】 // date2からdate1を引いた日数を求めます。 ////////////////////////////////////////////////// FUNCTION dateDiff(interval, date1, date2) DIM y1, y2, m1, m2, d1, d2, d SELECT interval CASE "yyyy" GETTIME(0, date1) y1 = G_TIME_YY GETTIME(0, date2) y2 = G_TIME_YY d = y2 - y1 CASE "m" GETTIME(0, date1) y1 = G_TIME_YY m1 = G_TIME_MM GETTIME(0, date2) y2 = G_TIME_YY m2 = G_TIME_MM d = (y2 - y1) * 12 + m2 - m1 CASE "d" d1 = GETTIME(0, date1) d2 = GETTIME(0, date2) d = (d2 - d1) / 86400 SELEND RESULT = d FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND ////////////////////////////////////////////////// // 【引数】 // 数値 : GETTIMEで取得した曜日の番号(G_TIME_WW=0:日曜….6:土曜) // フォーマット : 以下のアルファベットは数値で指定した対応する曜日に置き換えられます。(aaa : 日〜土、aaaa : 日曜日〜土曜日、ddd : Sun〜Sat、dddd : Sunday〜Saturday) // 【戻値】 // 数値をフォーマットした文字列を返します。 ////////////////////////////////////////////////// FUNCTION getWeekdayName(num, format = "aaa") DIM re = CREATEOLEOBJ("VBScript.RegExp") DIM aaa[] = "日", "月", "火", "水", "木", "金", "土"; DIM aaaa[] = "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"; DIM ddd[] = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"; DIM dddd[] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; match = reExecute(format, "(a|d)+") type = match.Item(0).Value RESULT = reReplace(format, EVAL(type + "[" + num + "]"), type) FEND ////////////////////////////////////////////////// // 【引数】 // シリアル値 : 時間を表すシリアル値を指定 // 【戻値】 // 例)0…00、0.5…12、1.0…24 ////////////////////////////////////////////////// FUNCTION Hour(serial) RESULT = REPLACE(FORMAT(INT(serial * 24), 2), " ", "0") FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND ////////////////////////////////////////////////// // 【引数】 // str1 : 置換される文字列 // str2 : 置換後の文字列 // Pattern : 置換する文字列のパターン // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現置換後の文字列 ////////////////////////////////////////////////// FUNCTION reReplace(str1, str2, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Replace(str1, str2) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // inputs : 繰り返す文字列 // multiplier : inputsを繰り返す回数 // 【戻値】 // inputsをmultiplier回を繰り返した文字列を返します ////////////////////////////////////////////////// FUNCTION strRepeat(inputs, multiplier) DIM res = "" FOR n = 1 TO multiplier res = res + inputs NEXT RESULT = res FEND ////////////////////////////////////////////////// // 【引数】 // serial : シリアル値 // format : フォーマット // 【戻値】 // 数値を表示書式に基づいて変換した文字列 ////////////////////////////////////////////////// FUNCTION text(serial, format) HASHTBL startDate startDate["明治"] = "1868/01/25" startDate["大正"] = "1912/07/30" startDate["昭和"] = "1926/12/25" startDate["平成"] = "1989/01/08" startDate["令和"] = "2019/05/01" DIM baseDate = "1899/12/30" SELECT TRUE CASE reTest(format, "\[h+\]") Matches = reExecute(format, "\[(h+)\]") RESULT = text(Hour(serial), strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "^h+$") Matches = reExecute(format, "^(h+)$") RESULT = text(Hour(serial) MOD 24, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "\[m+\]") Matches = reExecute(format, "\[(m+)\]") RESULT = text(serial * 1440, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE format = "m" GETTIME(serial, baseDate) RESULT = text(G_TIME_MM, "0") CASE format = "mm" GETTIME(serial, baseDate) RESULT = G_TIME_MM2 CASE format = "n" GETTIME(serial, baseDate) RESULT = G_TIME_NN CASE format = "nn" GETTIME(serial, baseDate) RESULT = G_TIME_NN2 CASE format = "s" GETTIME(serial, baseDate) RESULT = text(G_TIME_SS, "0") CASE format = "ss" GETTIME(serial, baseDate) RESULT = G_TIME_SS2 CASE format = "yyyy" GETTIME(serial, baseDate) RESULT = G_TIME_YY4 CASE format = "yy" GETTIME(serial, baseDate) RESULT = COPY(G_TIME_YY4, 3, 2) CASE format = "e" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 2018 CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1988 CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1925 CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1911 CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(serial, "yyyy") - 1867 SELEND CASE format = "ee" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 2018, "00") CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1988, "00") CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1925, "00") CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1911, "00") CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0 RESULT = text(text(serial, "yyyy") - 1867, "00") SELEND CASE format = "g" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "R" CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "H" CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "S" CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "T" CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "M" SELEND CASE format = "gg" RESULT = COPY(text(serial, "ggg"), 1, 1) CASE format = "ggg" SELECT TRUE CASE dateDiff("d", startDate["令和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "令和" CASE dateDiff("d", startDate["平成"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "平成" CASE dateDiff("d", startDate["昭和"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "昭和" CASE dateDiff("d", startDate["大正"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "大正" CASE dateDiff("d", startDate["明治"], text(serial, "yyyy/mm/dd")) >= 0; RESULT = "明治" SELEND CASE format = "mmmmm" RESULT = COPY(text(serial, "mmmm"), 1, 1) CASE format = "mmmm" SELECT text(serial, "m") CASE 1; RESULT = "January" CASE 2; RESULT = "February" CASE 3; RESULT = "March" CASE 4; RESULT = "April" CASE 5; RESULT = "May" CASE 6; RESULT = "June" CASE 7; RESULT = "July" CASE 8; RESULT = "August" CASE 9; RESULT = "September" CASE 10; RESULT = "October" CASE 11; RESULT = "November" CASE 12; RESULT = "December" SELEND CASE format = "mmm" RESULT = COPY(text(serial, "mmmm"), 1, 3) CASE format = "dd" GETTIME(serial, baseDate) RESULT = text(G_TIME_DD2, "00") CASE format = "d" GETTIME(serial, baseDate) RESULT = text(G_TIME_DD, "0") CASE format = "aaaa" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "aaaa") CASE format = "aaa" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "aaa") CASE format = "dddd" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "dddd") CASE format = "ddd" GETTIME(serial, baseDate) RESULT = getWeekdayName(G_TIME_WW, "ddd") CASE reTest(format, "(0+\.?0+)?%") Matches = reExecute(format, "(0+\.?0+)?%") RESULT = text(serial * 100, Matches.Item(0).SubMatches(0)) + "%" CASE reTest(format, "^\[DBNum\d{1,4}\](.*?)$") Matches = reExecute(format, "^\[DBNum(\d{1,4})\](.*?)$") SELECT Matches.Item(0).SubMatches(0) CASE 1 CASE 2 CASE 3 RESULT = STRCONV(text(serial, Matches.Item(0).SubMatches(1)), SC_FULLWIDTH) CASE 4 SELEND CASE reTest(format, "^(.*?)(AM\/PM|am\/pm|A\/P|a\/p)(.*?)$") Matches = reExecute(format, "^(.*?)(AM\/PM|am\/pm|A\/P|a\/p)(.*?)$") res = "" WITH Matches.Item(0) res = text(serial, .SubMatches(0)) + .SubMatches(1) + text(serial, .SubMatches(2)) ENDWITH RESULT = res CASE reTest(format, "([^ymdagehns]{0,})?(([ymdagehns])\3{0,})([^ymdagehns]+)?") Matches = reExecute(format, "([^ymdagehns]{0,})?(([ymdagehns])\3{0,})([^ymdagehns]+)?") FOR n = 0 TO Matches.Count - 1 IF n = 0 THEN res = Matches.Item(n).SubMatches(0) NEXT FOR n = 0 TO Matches.Count - 1 WITH Matches.Item(n) res = res + text(serial, .SubMatches(1)) + .SubMatches(3) ENDWITH NEXT RESULT = res CASE reTest(format, "(0+)\.?(0+)?") AND UBound(SPLIT(format, ".")) <= 1 Matches = reExecute(format, "(0+)\.?(0+)?") len1 = LENGTH(Matches.Item(0).SubMatches(0)) len2 = LENGTH(Matches.Item(0).SubMatches(1)) DIM arr[] = LENGTH(INT(serial)), len1 IFB POS(".", format) THEN RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX) + len2 + 1, len2), " ", "0") ELSE RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX)), " ", "0") ENDIF SELEND FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND
<div id="ToolList"> <ul> <li>ショッピング</li> <li>PayPayモール</li> <li>ヤフオク!</li> <li>PayPayフリマ</li> <li>ZOZOTOWN</li> <li>LOHACO</li> <li>トラベル</li> <li>一休.com</li> <li>一休.comレストラン</li> <li>ニュース</li> <li>天気・災害</li> <li>スポーツナビ</li> <li>ファイナンス</li> <li>テレビ</li> <li>映画</li> <li>GYAO!</li> <li>ゲーム</li> <li>Yahoo!モバゲー</li> <li>ebookjapan</li> <li>占い</li> <li>地図</li> <li>路線情報</li> <li>Retty</li> <li>クラシル</li> <li>不動産</li> <li>自動車</li> <li>TRILL <li>パートナー</li> </ul> </div>
結果
ショッピング
PayPayモール
ヤフオク!
PayPayフリマ
ZOZOTOWN
LOHACO
トラベル
一休.com
一休.comレストラン
ニュース
天気・災害
スポーツナビ
ファイナンス
テレビ
映画
GYAO!
ゲーム
Yahoo!モバゲー
ebookjapan
占い
地図
路線情報
Retty
クラシル
不動産
自動車
TRILL
パートナー

歌ネットから歌詞を取得してテキストファイルに保存

CONST ssfDesktop = 0 DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://www.uta-net.com/song/280568/") BusyWait(IE) DIM element, elements, name, lyrics element = IE.document.getElementById("view_kashi") elements = element.getElementsByClassName("title") name = TRIM(elements.Item(0).innerText) element = IE.document.getElementById("kashi_area") lyrics = element.innerText IE.Quit DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace(ssfDesktop) DIM path = Folder.Self.Path DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") path = uniqueFilename(FSO.BuildPath(path, name + ".txt")) DIM FID = FOPEN(path, F_READ OR F_WRITE) FPUT(FID, lyrics) FCLOSE(FID) ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND ////////////////////////////////////////////////// // 【引数】 // path : ファイルのパス // 【戻値】 // 重複しないファイル名 ////////////////////////////////////////////////// FUNCTION uniqueFilename(path) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.FileExists(path) THEN DIM fol = FSO.GetParentFolderName(path) DIM filename = FSO.GetBaseName(path) DIM extension = FSO.GetExtensionName(path) i = 2 WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension)) i = i + 1 WEND RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension) ELSE RESULT = path ENDIF FEND

環境センサーから位置情報を取得し、Googleマップで表示

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE DIM latitude = SENSOR(SNSR_Location_Latitude) DIM longitude = SENSOR(SNSR_Location_Longitude) IE.Navigate("https://www.google.co.jp/maps/@" + latitude + "," + longitude + ",15z?hl=ja") BusyWait(IE) // 終了する // IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND

楽天銀行定期預金の金利をExcelに保存

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://rbweb.rakuten-bank.co.jp/REF/main/fis/BasicTimeDepositInterestRate.html?PageID=BasicTimeDepositInterestRatePresentationLogicBean") BusyWait(IE) DIM elements = IE.document.getElementsByTagName("table") DIM element = elements.Item(0) DIM arr[-1][-1] getTableData(element, arr) IE.Quit DIM Excel = XLOPEN() XLSETDATA(Excel, arr, "A1") DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM path = uniqueFilename(FSO.BuildPath(GET_CUR_DIR, "楽天銀行定期預金金利.xlsx")) XLCLOSE(Excel, path) ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND ////////////////////////////////////////////////// // 【引数】 // table : tableエレメント // arr : 取得したデータを格納する配列(参照引数) // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE getTableData(table, Var arr[][]) // 何行何列のテーブルか求める rowMax = table.rows.length - 1 colMax = 0 FOR row = 0 TO table.rows.length - 1 IFB table.rows(row).cells.length - 1 > colMax THEN colMax = table.rows(row).cells.length - 1 ENDIF NEXT // テーブルの値を格納するための2次元配列を作成 DIM arr[rowMax][colMax] // テーブルの値を格納 FOR row = 0 TO table.rows.length - 1 FOR col = 0 TO table.rows(row).cells.length - 1 n = 0 WHILE arr[row][col + n] <> "" n = n + 1 WEND arr[row][col + n] = table.rows(row).cells(col).innerText // rowSpan(行結合)とcolSpan(列結合)の両方があれば IFB table.rows(row).cells(col).rowSpan > 1 AND table.rows(row).cells(col).colSpan > 1 THEN rmax = table.rows(row).cells(col).rowSpan - 1 cmax = table.rows(row).cells(col).colSpan - 1 FOR r = 1 TO rmax FOR c = 1 TO cmax arr[row + r][col + c] = "←" NEXT NEXT ENDIF // rowSpan(行結合)があれば結合セルに「↑」を代入 IFB table.rows(row).cells(col).rowSpan > 1 THEN n = table.rows(row).cells(col).rowSpan - 1 WHILE n arr[row + n][col] = "↑" n = n - 1 WEND ENDIF // colSpan(列結合)があれば結合セルに「←」を代入 IFB table.rows(row).cells(col).colSpan > 1 THEN n = table.rows(row).cells(col).colSpan - 1 WHILE n arr[row][col + n] = "←" n = n - 1 WEND ENDIF NEXT NEXT FEND ////////////////////////////////////////////////// // 【引数】 // path : ファイルのパス // 【戻値】 // 重複しないファイル名 ////////////////////////////////////////////////// FUNCTION uniqueFilename(path) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.FileExists(path) THEN DIM fol = FSO.GetParentFolderName(path) DIM filename = FSO.GetBaseName(path) DIM extension = FSO.GetExtensionName(path) i = 2 WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension)) i = i + 1 WEND RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension) ELSE RESULT = path ENDIF FEND

楽天PointClubでランクと保有ポイント数を取得する

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://point.rakuten.co.jp/") BusyWait(IE) DIM elements // ログインする elements = IE.document.getElementsByClassName("name") IFB elements.length = 0 THEN IELINK(IE, "ログイン") BusyWait(IE) IESETDATA(IE, READINI("楽天", "ID", "楽天.INI"), "u") // ユーザID IESETDATA(IE, READINI("楽天", "PASS", "楽天.INI"), "p") // パスワード IESETDATA(IE, TRUE, "submit") // ログイン BusyWait(IE) ENDIF // ランク elements = IE.document.getElementsByClassName("rank") elements = elements.Item(0).getElementsByTagName("em") PRINT elements.Item(0).innerText // ポイント elements = IE.document.getElementsByClassName("point-total") elements = elements.Item(0).getElementsByTagName("dd") PRINT elements.Item(0).innerText IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(Var IE) SLEEP(0.500) DIM t = GETTIME() TRY REPEAT DIM tm = GETTIME() - t FUKIDASI("BusyWait:" + tm) SLEEP(0.010) IF tm >= 60 THEN BREAK UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT IE = getIEObj(-1) PRINT IE.document.URL + " のIEオブジェクトを取得しました。" BusyWait(IE) ENDTRY FUKIDASI() FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND
あなたは ゴールド会員 です
総保有ポイント
559
[楽天] ID=info@example.com PASS=***
結果
ゴールド会員
559