※Windowsネタです。
Visual Auctionで出力した伝票を元にヤマト運輸に集荷依頼をかけるUWSCスクリプト
ヤマト運輸に集荷依頼を出すスクリプトを作成しました。良かったら使ってみてください。
例によってエラー処理とかはなしです。動けばOKというなんともざっくりしたスクリプトになっています。
とっても便利なヤフオクみなさんは取引の管理はどうしていますか?
いろんなツールが出ていますが、Macでは決定打になるツールがないので
僕はVM上のWin7で「Visual Auction」というシェアウェアを使って管理しています(フリー版有り)
シェアウェアだけ合って「Visual Auction」は出品も落札、発送、落札者や出品者とのやりとりなども
管理出来る。超多機能なソフトなんです。
発送に関してはドットインパクトプリンタがあれば、いろんな郵送業者の伝票に住所打ち込んだりとかもできちゃいます。
まぁその前にドットインパクトプリンタ持ってる人が個人でどんだけいるんだって話ですが・・・
便利とはいえ、不便なとこもあるんですよ
「Visual Auction」で住所を管理してるのに、現状管理している住所データをヤマト運輸のサイト上で集荷を依頼する際に自動で流用が出来ません。
※「はこBOON」でしたら一応対応していますが、手動で住所入力欄をソフト内のブラウザを使って呼び出し、
その状態で顧客管理画面に戻り、はこBOONボタンを押すというなんだかとってもめんどくさい手順を踏まなければなりません。
せっかくヤマト運輸はWebから集荷依頼をすると伝票を印刷して持ってきてくれるだから「バババ」っと発送情報を自動入力したら、
なんだかとっても便利なんじゃないかなと思うわけです。
メンドクサイ(´・д・`)ヤダだから自動化してみる
まぁこれが全てですw発送先住所を一生懸命コピペしても意味ないと思うので、自動化してその間に他の発送準備をしたほうが有意義かなと。
一回「Visual Auction」でエクセルファイルに出力するという手順を踏むので完全に自動ではないですが、ちまちまコピペしたりする手間を考えればありかなっと思ってます。
スクリプトを実行する前にやっておくこと
- UWSCがインストールされている
- 「Visual Auction」がインストールされている
- クロネコメンバーズになる
会員でない方は、スクリプトを使用する前に下記URLから会員登録をしてください。
https://cmypage.kuronekoyamato.co.jp/portal/custtempregpage?id=kojintop - 「Visual Auction」上で発送する落札者の情報をXLSファイルに書きだす(毎回)
- 上記で書きだしたXLSファイルをエクセルで開く(毎回)
準備ができたらスクリプトを実行してください。ソースは下記になります。
テキストファイルに保存し拡張子を「.uws」に変更してください。
UWSCインストール時に「.uws」をUWSCに関連付けしてあれば、ファイルをダブルクリックでスクリプトを実行出来ます。
※スクリプトの実行は自己責任でお願いいたします。このスクリプトを使用して発生した問題の一切の責任を負うことは出来ません。
もっとこうしたほうがいいよ〜とかアドバイスがありましたら教えていただけると嬉しいです!以下ソースコードになります。
[cc]//初期設定 idから集荷時間までの変数を自分の環境に合わせて変更してください。 URL1 = "https://syuhai.kuronekoyamato.co.jp/shuka/ENTRANCE?mypagesession=fe68b7ca034eac09f45e9842bb90efb9c3598ad4" id = "クロネコメンバーズのID" pass = "クロネコメンバーズのパスワード" 最短集荷日 = IE.document.getElementById("shukaKiboubi").getElementsByTagName("option").item(1).innertext//item(1)の値を増やすと日付を後ろにずらせる 集荷時間 = IE.document.getElementById("shukaKiboujikantai").getElementsByTagName("option").item(2).innertext//item(2)の値を増やすと集荷時間を遅らせられる 出荷種類 = "NORMAL_BTN"//通常の宅急便にしてあります。 /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// URL = "https://cmypage.kuronekoyamato.co.jp/portal/entrance" Dim ken[46] = "北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県", "茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県", "新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県" EXCEL = XLOPEN() 商品名 = XLGETDATA(Excel,"D"+2) 商品名 = STRCONV(商品名,SC_FULLWIDTH) 文字数 = LENGTHB(商品名) if 文字数 > 30 then 商品名 = COPYB(商品名,1,30) 氏名 = XLGETDATA(Excel,"L"+2) shimelen = LENGTH(氏名) kuhaku = POS(" ",氏名) 苗字 = COPY(氏名,1,kuhaku-1) 名前 = COPY(氏名,kuhaku+1,shimelen) ZIP = XLGETDATA(Excel,"N"+2) ZIP = STRCONV(ZIP,SC_HALFWIDTH) zlen = LENGTH(zip) zip1 = COPY(zip,1,3) zip2 = COPY(zip,5,4) if zlen = 7 then zip2 = COPY(zip,4,4) address = XLGETDATA(Excel,"O"+2) for x = 0 to 45 ifb POS(ken[x],address) > 0 then 県名 = ken[x] break endif next address2 = CHGMOJ(address,県名,"") add2len = LENGTH(address2) Dim add2chek[add2len] for y = 0 to add2len-1 h = y+1 add2chek[y] = COPY(address2,h,1) next for z = 0 to add2len-1 number = add2chek[z] nc = CHKNUM(number) if nc = 1 then break next address3 = COPY(address2,1,z) address4 = CHGMOJ(address2,address3,"") address3 = STRCONV(address3,SC_FULLWIDTH) address4 = STRCONV(address4,SC_FULLWIDTH) tel = XLGETDATA(Excel,"P"+2) tel1 = COPY(tel,1,3) tel2 = COPY(tel,5,4) tel3 = COPY(tel,10,4) intWidth = 1280 intHeight = 1000 intX = 0 intY = 0 IE = CreateOLEObj("InternetExplorer.Application") IE.Width = intWidth IE.Height = intHeight IE.Left = intX IE.Top = intY IE.Visible = True /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// //ログイン~集荷情報入力 IE.Navigate(url) BusyWait(IE) IE.document.getElementById("id").value = id IE.document.getElementById("passwd").value = pass IESetData(IE,True,"Submit","ログイン") BusyWait(IE) IE.Navigate(url1) BusyWait(IE) IE.document.getElementById(出荷種類).click BusyWait(IE) IESetData(IE,最短集荷日,"shukaKiboubi")//最短集荷日 IESetData(IE,集荷時間,"shukaKiboujikantai")//13時まで IESetData(IE,True,"farePayment","1") IE.document.getElementById("shukaTakkyuHinmeNm").value = 商品名 IESetData(IE,True,"shukaDdenpyoFlg","2") IESetData(IE,True,"NEXT_BTN","次へ") BusyWait(IE) //相手先情報入力 IE.document.getElementById("cstmrTel1").value = tel1 IE.document.getElementById("cstmrTel2").value = tel2 IE.document.getElementById("cstmrTel3").value = tel3 IE.document.getElementById("cstmrZipCd1").value = zip1 IE.document.getElementById("cstmrZipCd2").value = zip2 IE.document.getElementById("cstmrTodofukenNm").value = 県名 IE.document.getElementById("cstmrShikugunNm").value = address3 IE.document.getElementById("cstmrBanchi").value = address4 IE.document.getElementById("cstmrLnm").value = 苗字 IE.document.getElementById("cstmrFnm").value = 名前 IESetData(IE,True,"NEXT_BTN"," 次へ ") BusyWait(IE) //確認画面~終了 IESetData(IE,True,"INSERT_BTN"," 確定 ") BusyWait(IE) msgbox("完了。クリックすると終了します。") IE.Quit // IE終了 IE = Nothing XLCLOSE(EXCEL) EXCEL = Nothing //------ Procedure BusyWait(ie) Sleep(0.5) // Wait Const TIME_OUT = 90 tm = Gettime() repeat Sleep(0.2) ifb Gettime() - tm > TIME_OUT MsgBox("Time Out:BusyWait") ExitExit endif until (! ie.busy) and (ie.readyState=4) Sleep(0.5) Fend[/cc]