UWSC 掲 示 板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

平日のみ動くスクリプト / Kouki
スケジュール設定について質問いたします.
毎日、毎週、毎月はデフォルトで実行されるのですが、平日のみスクリプトを実行としたいのですが、あいにくこの条件式の書き方が分かりません.

代替案として、スクリプトの先頭に今日の曜日を取得して、土曜か日曜ならば以降のスクリプトを実行しないと書きたいところですが、いい方法が分からず、「もし、土日でなければ、Call Sales.uwsを実行する。そうでなければSales.uwsを実行しない」と曜日を識別するスクリプトとSales.uwsの2つのスクリプトに分けて実行しているのです。
端的に書く方法はございますか.

No.5228 2018/03/12(Mon) 20:47:44

Re: 平日のみ動くスクリプト / Liners
下記が詳しいですね。
参考URL: https://mblg.tv/ahnazui/entry/352/

No.5229 2018/03/13(Tue) 14:43:03

Re: 平日のみ動くスクリプト / Kouki
Linerさん

ありがとうございます。おかげでできました!
あちこち検索したのに教えてくださったサイトは見つけられなかったです。。

No.5231 2018/03/13(Tue) 22:16:58
Excel関数をコピー&ペーストしたい / sen
毎日、Yahooファイナンスから前日の株式データを取得して、既存Excelの末尾5行(A〜F列)として追加しています。
そのあと、G〜U列に入っている関数を末行までコピー&ペーストしたいのですが、UWSCのCOM機能で試してもうまく実行できません。
xlupが無効なようですが、COMには対応してないのでしょうか?
やむを得ずVBAでプログラムを作成して、そのマクロを登録したフォームボタンを押すという手で逃げているのですが、皆様はどのように対応されておられますか?

No.5221 2018/03/11(Sun) 13:22:59

Re: Excel関数をコピー&ペーストしたい / Liners
Comには対応しています。下記参照。
Excelの使用にて定数がわからない、定数名を使用したい  #N48
http://www.uwsc.info/faq.html#N48

追記:現在 UWSCのTopページが閲覧できないようです。

No.5222 2018/03/11(Sun) 14:36:30

Re: Excel関数をコピー&ペーストしたい / sen
Linersさん
お返事ありがとうございます。

CONST xlUp = -4162

と行を見つけたのですが、これはend(xlup)をend(-4162)とすればいいということでしょうか?
理解が伴わずすみません。

No.5223 2018/03/11(Sun) 17:51:59

Re: Excel関数をコピー&ペーストしたい / onsight
Excelにはテーブルという機能があります。そうしておくとA〜F列にデータを入力すると、自動的にG〜U列に上の行の関数がコピーされ結果表示されますよ。詳細は「Excel テーブル」でググってみてください。
定数の使い方は、答えを聞くのではなくご自身で試されてはいかがですか。試行錯誤するのが理解、習得には必要だと思います。

No.5230 2018/03/13(Tue) 19:35:47
XPでも動きますよね? / ある
お世話になっています(本当に毎日)。

時代錯誤な質問ですが、uwscはwindows XPやXP proでも問題なく動きましたよね?
知人がuwscを使いたいけれどMacしかなくてwindowsを検討中との事。
別に大層な処理をするわけでもないので、本当に最低限の自動化が出来れば問題ない状況です。
であれば最安値の中古の5000円台のXPで良いのでは、と思っています。

確か動いたよなぁという記憶はあるのですが、確証が持てないので念のため質問させて頂きました。
また、もし「中古のXPならここを気をつけろ!」みたいなアドバイスとかもあれば
頂けると嬉しいです。

No.5208 2018/03/09(Fri) 20:32:08

Re: XPでも動きますよね? / トンボ
本サイトに下記の記載がありますので、動作すると考えてよいですね。
「動作環境」
 Windows XP / Vista / 7 / 8.x / 10

事情によりWindows 2000 Proを使用していて、簡単なスクリプト程度ですが正常に動作しました。

追伸。サポート終了のOSはセキュリティ面のリスクが高いので、ネットワーク未使用など対策が必要です。(18/3/12追記)

No.5213 2018/03/10(Sat) 20:49:41

Re: XPでも動きますよね? / ある
トンボさん
参考になります!ありがとうございます

No.5215 2018/03/11(Sun) 00:03:29

Re: XPでも動きますよね? / stuncloud
XPはサポートも終わってるので使わないほうが良いかと思います
なるべく新しいWindowsのライセンスを購入して環境を用意すべきです
(予算が5,000円くらいということだとちょっと厳しいかもですが)

macなら例えば
https://support.apple.com/ja-jp/HT201468
と言った方法でWindowsを動作させられますし、VirtualBox等でWindowsを動かすと言う手もありますよ

No.5227 2018/03/12(Mon) 18:31:13
ファイルの立ち上げ / バラモス
市販のBIツールで作成したレポートファイルがあります。
これを再度立ち上げるときは、

@レポートファイルをダブルクリックする。その後パスワードを打ち込む

ABIツールを立ち上げ、パスワードを打ち込む。その後でレポートファイルをBIツールにドロップする。

BBIツールを立ち上げ、パスワードを打ち込む。その後でファイル>開くからレポートファイルを選択する。

のいずれかを実行する必要があります。
ログイン時のパスワードがなければdropfileの構文で立ち上げが可能だと思うのですが、パスワードがあるがゆえにdropfileが使えず困っています。
レポートファイルを格納したフォルダをEXECで呼び出し、レポートファイルの座標位置でダブルクリックという原始的な方法でやってるのですが、レポートファイルの増加によってうまく作動しないことがあります。
何かよい知恵はないものでしょうか?

No.5217 2018/03/11(Sun) 01:07:16

Re: ファイルの立ち上げ / stuncloud
dropfileを使いたいということはファイルのパスは予めわかっているということですよね
でしたら

exec("<#DBL>ツールのパス<#DBL> <#DBL>ファイルのパス<#DBL>")

でそのツールがファイルを読み込んだ状態で起動するのなら一番手軽かな、と思います
あるいはパスワードを打ち込むところもUWSCにやらせてしまうとか?
パスワードの入力だけは手打ちしたいというのであれば

1. スクリプトからツール起動
2. パスワード入力画面が消えるまでスクリプト待機
3. ファイルをdropfile()する

といったやり方もアリかと思います
dropfile()ができなさそうなら ファイル\開く からの操作をやらせる

No.5226 2018/03/12(Mon) 18:24:40
キーワードプランナーにある「検索ボリュームを取得」というボタンをクリックする方法 / はるか
グーグルクロームのブラウザーでキーワードプランナーというサイトに接続したサイトで「検索ボリュームを取得」というボタンをクリックしたいのですが、やり方がいまいち分かりません。DOMでやればいけると思うのですがソースの書き方が分かりません。助けて頂けませんでしょうか?
下記がスクリーンショットしたURLと検証で見てみた検索ボリュームソースです。

キーボードでtabを13回押せば「検索ボリュームを取得」というボタンに到達するのですが安定せず違うところに合わさってしまう事がありうまく処理ができません。

[URL]
https://gyazo.com/cadfeadafc213534883a36187160a10b

[ソース]
<div class="goog-button-base-content"><span id="gwt-debug-upload-ideas-button-content">検索ボリュームを取得</span></div>

No.5211 2018/03/10(Sat) 16:21:58

Re: キーワードプランナーにある「検索ボリュームを取得」というボタンをクリックする方法 / はるか
下記からどう書いたらいいのかが分かりません。
g =IE.document.getElementById("gwt-debug-upload-ideas-button-content")

No.5212 2018/03/10(Sat) 19:02:21

Re: キーワードプランナーにある「検索ボリュームを取得」というボタンをクリックする方法 / はるか
下記はよく考えたら使えません、今回はグーグルクロームなので。
なにか良い方法ないでしょうか?
g =IE.document.getElementById("gwt-debug-upload-ideas-button-content")

No.5219 2018/03/11(Sun) 10:31:17

Re: キーワードプランナーにある「検索ボリュームを取得」というボタンをクリックする方法 / stuncloud
Chromeのアドレスバーにjsのワンライナーを入れてブックマークレットのような感じでDOMを操作するという方法のサンプルが過去にこの掲示板で何度か上がってたと思うので、それらを参考にしてみてください
No.5225 2018/03/12(Mon) 18:17:26
配列サイズの全部の要素を30個ずつ、クリップボードに入れる方法 / なお
配列サイズは、ランダムに変更される
例えば配列サイズが75個の場合、1回目で30個配列要素(1〜30個目まで)をクリップボードにいれて、2回目は31個目から60個目の配列要素をクリップボードにいれる、3回目は残りの15個の配列要素をクリップボードにいれたいのですが、どのようにソースを書けばいいか分かりません。何か良い方法ないでしょうか?

dim utuwa
hai_a=split(zen,"<#CR>")
msgbox(length(hai_a))//配列サイズ75

行_a=length(hai_a)-1
行_b=length(hai_a)-30


for i = 行_a to 行_b step -1
utuwa=utuwa+hai_a[i]+"<#CR>"
next

sendstr(0,utuwa)

No.5218 2018/03/11(Sun) 10:28:21

Re: 配列サイズの全部の要素を30個ずつ、クリップボードに入れる方法 / stuncloud
slice()という関数で配列の任意の範囲を別の配列として取り出せるので、それを使ってみます

offset = 0
limit = 30 // 30個ずつ取り出す
while TRUE
 sa = slice(hai_a, offset, offset + limit - 1)
 if length(sa) = 0 then
  break
 endif
 utuwa = join(sa, "<#CR>") // 改行で連結
 sendstr(0, utuwa) // クリップボードに入れる
 msgbox(getstr(0)) // 確認
 offset = offset + limit // 取り出し開始位置をずらす
wend

limitの数を調整することで例えば24個ずつ取り出すとか、50個ずつ取り出すとかも自在です

No.5224 2018/03/12(Mon) 18:08:44
グーグルクロームの処理状態判別方法 / 荒鷲
IEでは、下記があるのですがクロームではどうしたらいいのでしょうか?

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

---------------------
[試したコード]

title=" , WorkerW"
title1="キーワード プランナー - Google AdWords - Google Chrome , Chrome_WidgetWin_1"

id=getid(title)
id1=getid(title1)

fp99="https://adwords.google.com/ko/KeywordPlanner/Home?__u=7631967771&__c=6348997371&authuser=0#search"
id2="Google AdWords - Google Chrome"
id3=exec( "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"+" "+fp99 )

repeat
SLEEP(0.1)
until id1=id

msgbox(11)

No.5220 2018/03/11(Sun) 10:52:42
Outlookメールが書けない / あだちちゃん
OUTLOOK2013を立ち上げ、新規メールの「宛先」「CC」、「件名」、「本文」にKBDの構文で字を打ち込もうとしたのですが、まったく字が入力しません。
どこがおかしいのでしょうか?
SENDSTRでやってみてもうまくいかなくて。
教えていただけると助かります。



EXEC("C:\Program Files (x86)\Microsoft Office\Office15\OUTLOOK.exe")

SLEEP(5)

KBD(VK_CTRL,DOWN,40)
KBD(VK_N,CLICK,0)
KBD(VK_CTRL,UP,31)



SLEEP(1)

ID = GETID("無題 - メッセージ (HTML 形式)","rctrl_renwnd32")



//宛先入力

KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)

KBD(VK_TAB,CLICK,40)



//CC入力

KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)

KBD(VK_TAB,CLICK,40)
KBD(VK_TAB,CLICK,40)



//件名入力
KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)

KBD(VK_TAB,CLICK,40)



//本文入力
KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)
KBD(VK_A,CLICK,40)



//送信

KBD(VK_ALT,DOWN,40)
KBD(VK_S,CLICK,40)
KBD(VK_ALT,UP,40)

No.5196 2018/03/07(Wed) 17:46:09

Re: Outlookメールが書けない / トンボ
今はPCが使えないため、ざっと見ですが、下記で解決できそうです。
@UWSCによる操作が速すぎて、Outlook側が反応できない。(上記だと0〜40msになってます。)
 各操作の待機時間を1秒以上に調整してはどうでしょうか。SLEEP関数の挿入でも構いません。
Aテキストボックスにカーソルがある状態にしてから文字列入力してください。

アドバイスですが、スクリプト実行時に手動操作が忠実に再現できているか、細かく確認すべきです。

No.5214 2018/03/10(Sat) 21:13:05

Re: Outlookメールが書けない / あだちちゃん
トンボさん

おっしゃるとおりでした。
sleepで解決しました。
ありがとうございました。

No.5216 2018/03/11(Sun) 00:56:03
IEの終了方法 / へんてこ
IF文でIEを終了させたいのですが、うまくいかないので質問させてください。
以前は問題なく動いていました。
IEのバージョンが変わったからかなと思っております。
IE 11 Windows10

IFB IELink(IE,"OK") //
BusyWait()
ELSE
OleEvent(IE); IE.Quit() // OleEventクリア & IE終了
EXITEXIT
ENDIF

OKのテキストリンクが押せなかったら、IEを終了させたい。
ご教授いただければ幸いです。

No.5181 2018/03/05(Mon) 18:30:06

Re: IEの終了方法 / ある
パット見わかんないですが
IELink(IE,"OK")がfalseだったりしませんかね?

No.5190 2018/03/06(Tue) 20:13:45

Re: IEの終了方法 / へんてこ
ご回答ありがとうございます。
今はこのような記述ですがおかしいところはありますでしょうか。
よろしくお願いいたします。

option position=100,100
Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
setOleEvent()
IE.Navigate("https://www.yahoo.co.jp")
BusyWait()
IESetData(IE,"info@hotmail.com","email_data") // TEXT
IESetData(IE,"1234abc","pw") // PASSWORD
IESetData(IE,True,"","ログイン") // SUBMIT
BusyWait()
IELink(IE,"終了") //
BusyWait()

While True
IFB IELink(IE,"OK") //
BusyWait()
ELSE
OleEvent(IE); IE.Quit() // OleEventクリア & IE終了
EXITEXIT
ENDIF
IESetData(IE,True,"submit") // SUBMIT         
BusyWait()
IESetData(IE,True,""," submit ") // SUBMIT
BusyWait()
IELink(IE,"submit") //
BusyWait()
Wend


// OleEvent(IE); IE.Quit() // OleEventクリア & IE終了

//------
DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32
CONST WM_ACTIVATE = $06
Public Pub_url, Pub_docc, Pub_BeforNav_cnt, Pub_DocComp_cnt, Pub_inp_flg
Procedure BusyWait()
Sleep(0.3)
tm = GetTime()
repeat
ifb GetTime() - tm > 90 // TimeOut
Pub_docc = ""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0
IE.Navigate(Pub_url)
tm = GetTime()
endif
Sleep(0.2)
ifb Pub_inp_flg
Pub_inp_flg = False
continue
endif
if IE.busy then continue
if Pub_url = "" then break // No read
if (Pos("*"+Pub_url+"*",Pub_docc)) or (Pos("*"+IE.LocationURL+"*",Pub_docc)) or (Pub_BeforNav_cnt<=Pub_DocComp_cnt) then else continue
errflg = False
if IE.document.title = "503 Unavailable" then errflg = True
if IE.document.title = "Service Unavailable" then errflg = True
if IE.document.title = "503 Service Temporarily Unavailable" then errflg = True
ifb errflg
Sleep(90) // 503: Wait&Retry
tm = 0
continue
endif
Sleep(0.3)
until ! Pub_inp_flg
Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0
SendMessageA(IE.Hwnd, WM_ACTIVATE, 0, 0)
Fend
Procedure setOleEvent()
OleEvent(IE, "DWebBrowserEvents2", "BeforeNavigate2", "fucBeforNav")
OleEvent(IE, "DWebBrowserEvents2", "DocumentComplete", "fucDocComp")
OleEvent(IE, "DWebBrowserEvents2", "OnQuit", "fucQuit")
Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0; Pub_inp_flg=False
Fend
Procedure fucBeforNav()
ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1])
if Pub_url="" then Pub_url = ""+EVENT_PRM[1]
Pub_BeforNav_cnt = Pub_BeforNav_cnt + 1
endif
Pub_inp_flg = True
Fend
Procedure fucDocComp()
ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1])
Pub_docc = Pub_docc + "*"+EVENT_PRM[1]+"*"
Pub_DocComp_cnt = Pub_DocComp_cnt + 1
endif
Pub_inp_flg = True
Fend
Procedure fucQuit()
ExitExit
Fend

No.5195 2018/03/07(Wed) 15:17:02

Re: IEの終了方法 / ある
詳細確認してないですが、僕ならこうする、という観点から

While True

msgbox(IElink(IE,"OK")) //確かこれでtrue or falseが出たような…

IFB IELink(IE,"OK")
BusyWait()


以前は問題なく動いたとのことなので、ここが一番怪しいのかなと。
これでtrueになっているのであればそのちょっと下を疑ってみるとか…

No.5198 2018/03/07(Wed) 23:15:46

Re: IEの終了方法 / へんてこ
ご指摘ありがとうございます。
「OK」が押せなかった場合は、メッセージボックスには「1」と表示されました。
無限ループしている場合は、抜ける「break」を入れないといけないのでしょうか。
何度も質問して申し訳ございません。

No.5200 2018/03/08(Thu) 15:49:40

Re: IEの終了方法 / ある
1が出たならばtrueなので内部挙動的には「押せた」という判定だと思います。
サイト仕様が変わってIElinkでは押せなくなった(uwscの判定的には押したことになっている)
のではないかなと。

僕もクリック処理は結構つまずくので些末な助言レベルですが…
1.Pro版の右クリ→押下処理を試す(イイ感じのコードを出してくれることが結構あります)
2.clkitemを使う
3.chkimgで対象ボタンの座標を拾ってからのクリック処理
4.IE.document.forms[n].elements[i].click を試す
↑ここまでは押すための内容です。

「駄目ならIE終了」は原始的ですが、IE.document.urlでurlをとっておいて
数秒ごとにurlをチェックして、例えば20秒間urlに変化がなければIE.quit()とかが簡単です。

No.5202 2018/03/08(Thu) 20:08:12

Re: IEの終了方法 / へんてこ
丁寧なご返信ありがとうございます。
数種類のクリック方法を試しましたが、UWSC上ではクリックされていると判定されいているようです。
はやり、そういう方法しかなさそうですね。
ありがとうございました。

No.5210 2018/03/10(Sat) 13:07:05
CHIKIMGの高速化? / カリシュタ
CHKIMGでは、呼び出されるたびにスクリーンショットをメモリに記録しているのですよね。
ディレクトリ内のbmpをgetdirで取得し、for〜inで回して1つずつchkimgし続けるとき、
環境によっては非常に鈍足です。
そこで、あらかじめスクリーンを記録し、それに対して複数のchkimgを実行できないかと考えたのですが、何か、方法はないでしょうか?
よろしくお願いいたします。
(範囲の制限、MOUSEORGなどの考え得る効率化は実践済みです)

No.5172 2018/03/02(Fri) 23:15:11

Re: CHIKIMGの高速化? / トンボ
>そこで、あらかじめスクリーンを記録し、それに対して複数のchkimgを実行できないかと考えたのですが、何か、方法はないでしょうか?
下記の方法で高速化の成否を確認してみてください。
SAVEIMG関数で引数"画像名"を省略すれば、画面をイメージとしてクリップボードに格納し、CHKIMG関数で引数"画像名"を省略すれば、クリップボードのイメージで比較します。

No.5177 2018/03/03(Sat) 10:47:16

Re: CHIKIMGの高速化? / カリシュタ
トンボさん、返信ありがとうございます。

拙文では意味を伝えられなかったことをお詫びします。

chkimg([探す対象])

ここでの探す対象をスクリーンから記録したかったわけではなく

chkimg("example1.bmp")
chkimg("example2.bmp")

のとき、example1.bmp、example2.bmpをサーチする対象であるディスプレイが
chkimgを呼ぶたびに取得されメモリに入ることを避け、
2つのchkimgを1つのスクリーンショットを対象に実行させたいのです。

自分でもいくつか方法を模索してみましたが、うまくいかないようです。
やはりuwscでは難しいでしょうか。。。

No.5184 2018/03/05(Mon) 23:37:25

Re: CHIKIMGの高速化? / みやもと
5chでプラグインが配布されていますよ。
No.5203 2018/03/08(Thu) 22:14:12

Re: CHIKIMGの高速化? / トンボ
CHKIMG関数実行1回につき1イメージ分のメモリ使用が仕様として正なのか、処理が重い原因がメモリ使用なのか、開発者でないと確証困難です。(ドット単位比較処理の方が重いかもしれません。)仮にカリシュタさんの言う通りだったとして、CHKIMG関数はヘルプに記載された使用方法でしか扱えないです。
結論としては「UWSC単独では難しい」ので、別の方法を探すべきでしょうね。例えばメモリを結構使うならメモリ増設、フリーツール使用(UWSCからツール実行)、DLL呼び出しなど。
また、powershellも考えましたが、色幅が指定不可などCHKIMG関数と比べ色々と使い勝手が悪いです。

No.5205 2018/03/09(Fri) 01:22:55

Re: CHIKIMGの高速化? / みやもと
遅い原因は毎回キャプチャしていることに有ります。
CHKIMGの比較速度は非常に早く(アルゴリズム的に優れているわけではなくpixel比較は高速)、比較よりもキャプチャが時間かかるぐらいです。
1つの画面に対して100回比較したい場合CHKIMGを呼び出すのは99回は時間の無駄以外はありません。
UWSCにはDLLを読み込む機能がありますので、自分で作成する又は第三者が作成したCHKIMGXのようなものを利用することをお勧めします。

No.5207 2018/03/09(Fri) 03:39:49

Re: CHIKIMGの高速化? / カリシュタ
トンボ さん みやもと さん アドバイスありがとうございました

試行錯誤の結果自前のDLLで改善することができました
CHKIMGXの存在を知っていれば…

No.5209 2018/03/10(Sat) 01:43:59


 過去ログ(〜2017/08/24)・検索ツール


以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> | 過去ログ ]