Quantcast
Channel: http://highhigherhighest.com/ » Script

UWSCで代入した値の中にある指定キーワードの数を数える方法

$
0
0

IStock 000002193624Medium2 わかりづらいタイトルですみません。エクセルの表の1セルの中に入っているハイフンの数を知りたくて書きました。あまり使う機会がないかもしれませんが、参考になれば幸いです。 [cc] EXCEL = XLOPEN()   for i = 2 to 商品総数       商品名 = XLGETDATA(Excel,"C"+i)      n = 1       cnt = 0         g = POS("-",商品名,n)//検索キーワード"-"が商品名の中にいくつあるか数える      While g > 0          g = POS("-",商品名,n)            cnt = cnt+1             n = n+1         wend        cnt = cnt-1     next [/cc] http://officetanaka.net/excel/vba/function/InStr.htmを参考にしました ちなみに僕もうMacに移行して1年以上経つんですが、未だにAppleScriptを始めとした Mac関連のScript・プログラミング言語を理解していないため、自動化するときだけ仮想環境のWin7を立ち上げて、UWSCでScriptを記述するということをやっております・・・ UWSCとっても良いのですが、いい加減MacのAppleScript覚えろ自分と思う今日この頃です^^;

フォルダアクション作ってみました。スクショをリネーム&JPGに変換後ピクチャフォルダに移動するアクション

$
0
0

Automator 512

スクショをリネーム&JPGに変換後ピクチャフォルダに移動するフォルダアクションを作ってみました。

Blogに記事を投稿する際スクリーンキャプチャを使うことが結構あるのですが、
デスクトップにPNGで保存され、かつファイル名が2バイトのファイル名になるため、
ブログに投稿するまでに、

  • PNGからJPGに変換
  • ファイル名をアルファベットのみに変更
  • Mar's Editが認識できるピクチャフォルダ直下にファイルを移動

という手順を踏まなければならず、なんとかならないかな〜と思っていたら
フォルダアクションを使えばかなり便利になるらしいという情報をゲット!

Macの手書き説明書さんで解説されていた記事を元に以下のAutomatorファイルを作ってみました。
http://veadardiary.blog29.fc2.com/blog-entry-2830.html

自動化する一連の流れは

  • フォルダアクションの対象となるフォルダを設定
  • フォルダの内容を取得
  • Finder項目名を連番付きの名前にする 例:img_00
  • Finder項目名に日付または時刻を追加 ※個々のファイル名が重複しないように念のため
  • イメージのタイプを変更※JPEGを指定
  • フォルダの内容を取得※これをやらないとうまくファイルが移動されなかったため
  • Finder項目を移動※移動先のフォルダを指定 例:ピクチャ

となります。以下の画像のような感じになります。
これで予め指定したフォルダに画像を放りこめば、勝手にファイル名と形式を変更して
指定したフォルダに移動してくれるようになりました。
画像の投稿がだいぶ楽になりました!
Img 01 223149

Visual Auctionで出力した伝票を元にヤマト運輸に集荷依頼をかけるUWSCスクリプト

$
0
0

※Windowsネタです。

Visual Auctionで出力した伝票を元にヤマト運輸に集荷依頼をかけるUWSCスクリプト

Img 01 232333 1

自分が出品者の場合に「Visual Auction」で出力したエクセルファイルの情報を元に
ヤマト運輸に集荷依頼を出すスクリプトを作成しました。良かったら使ってみてください。
例によってエラー処理とかはなしです。動けばOKというなんともざっくりしたスクリプトになっています。

とっても便利なヤフオクみなさんは取引の管理はどうしていますか?

いろんなツールが出ていますが、Macでは決定打になるツールがないので
僕はVM上のWin7で「Visual Auction」というシェアウェアを使って管理しています(フリー版有り)
シェアウェアだけ合って「Visual Auction」は出品も落札、発送、落札者や出品者とのやりとりなども
管理出来る。超多機能なソフトなんです。

発送に関してはドットインパクトプリンタがあれば、いろんな郵送業者の伝票に住所打ち込んだりとかもできちゃいます。
まぁその前にドットインパクトプリンタ持ってる人が個人でどんだけいるんだって話ですが・・・

便利とはいえ、不便なとこもあるんですよ

「Visual Auction」で住所を管理してるのに、現状管理している住所データをヤマト運輸のサイト上で集荷を依頼する際に自動で流用が出来ません。
※「はこBOON」でしたら一応対応していますが、手動で住所入力欄をソフト内のブラウザを使って呼び出し、
その状態で顧客管理画面に戻り、はこBOONボタンを押すというなんだかとってもめんどくさい手順を踏まなければなりません。

せっかくヤマト運輸はWebから集荷依頼をすると伝票を印刷して持ってきてくれるだから「バババ」っと発送情報を自動入力したら、
なんだかとっても便利なんじゃないかなと思うわけです。

Img 01 001433

メンドクサイ(´・д・`)ヤダだから自動化してみる

まぁこれが全てですw発送先住所を一生懸命コピペしても意味ないと思うので、自動化してその間に他の発送準備をしたほうが有意義かなと。
一回「Visual Auction」でエクセルファイルに出力するという手順を踏むので完全に自動ではないですが、ちまちまコピペしたりする手間を考えればありかなっと思ってます。

スクリプトを実行する前にやっておくこと

  • UWSCがインストールされている
  • 「Visual Auction」がインストールされている
  • クロネコメンバーズになる
    会員でない方は、スクリプトを使用する前に下記URLから会員登録をしてください。
    https://cmypage.kuronekoyamato.co.jp/portal/custtempregpage?id=kojintop
  • 「Visual Auction」上で発送する落札者の情報をXLSファイルに書きだす(毎回)
    Img 02 000334
    Img 03 000411
  • 上記で書きだしたXLSファイルをエクセルで開く(毎回)
    Img 04 000448

準備ができたらスクリプトを実行してください。ソースは下記になります。
テキストファイルに保存し拡張子を「.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]

Ever2Mars 〜Macなブロガー必見!?Evernoteにストックしたブログネタを一瞬で MarsEditに転送するAppleScript〜を作りました。

$
0
0

Screen-Shot-2011-08-22-at-10.09.01-AM.jpg

Evernoteの個別記事をMarsEditに送るAppleScript「Ever2Mars」を作りました。

Ever2mars

ダウンロードはこちらから

直接実行しても大丈夫ですが、LaunchBarやQuickSilverなどのランチャーから呼び出して使うと便利です。 Ever2Note.scpt

※使用方法

  1. Evernoteを開きます。
  2. EvernoteからMarsEditに送りたい記事を個別ウィンドウで開いてください。
  3. Ever2Marsを実行
実行すると自動でMarsEditが立ち上がり、Evernoteから取得した記事の内容をMarsEditに反映させるとEvernote側の個別ウィンドウは閉じるようにしてあります。 ※注意事項
  • Evernoteの個別記事ウィンドウを開いていない状態で実行すると選択中のノートブックの一番最初のノートの内容でMarsEditに記事が作成され、その後Evernoteのメインウィンドウが閉じます。
  • divタグはpタグに変換するようにしてあります。
  • Evernote内の記事に含まれる画像は反映されません。 手動でMarsEditに取り込む必要があります。
  • EvernoteのタグはMarsEditのタグの欄に入るようにしてあります
  • このスクリプトを使用は自己責任でお願いいたします。 使用に伴い発生した如何なる不具合の責任も追うことは出来ません。
  • こんな風に動作します

    [youtube]http://www.youtube.com/watch?v=bWuYiauX2tU[/youtube]

    開発理由:Evernoteからコピペするのがメンドクサイ

    MarsEditを使い始めてから、ずっとEvernoteとMarsEdit両方に書きかけのネタが保存されていて、勝手が悪かったのでどちらかに統一したいなと検討。 バックアップや移動中にも編集が出来ることなどを考えてEvernoteにネタはまとめることにしたのですが、いざ、記事を書くとなると、タイトルをコピーしたり、本文をコピーしたり、メンドクサイことに気づいたのです。 ブログはこれからも書き続けていくので、その都度コピペを繰り返すのは嫌だと思いなんとか出来ないものかと考えたところ、どうやらMarsEditがAppleScriptに対応しているようだということが判明。 EvernoteがAppleScriptに対応していることは知っていたので、勉強を兼ねて作ってみることにしました。

    意外と速く完成

    このアイディアをつぶやいたのが閃いた直後の約7時間前。 ここから作業を開始しました。

    Evernoteに記事をストックという前提で、Evernoteにストックする際にタグとかをつけるわけで、いざ記事を書く段階になったら、そのタグをMarseditに反映するようなプログラムあったらいいなとおもったり。したら書くの楽チンだなless than a minute ago via Twitter for Mac Favorite Retweet Reply

    途中で仕様変更

    当初はEvernoteから当該ノートをHTML形式でエクスポートしてそのファイルをMarsEditで読み込ませようと考えていましたが、どうやらAppleScriptを使えば、わざわざHTML出力することなく、ノートのデータが取得できることが判明。 よって、該当ノートを選択→スクリプト実行→自動でMarsEditが立ち上がり、記事が流し込まれるという仕様に。 当初は記事の一覧で流し込みたい記事を選択してスクリプトを走らせれば、MarsEditにデータが流れるようにしたかったのですが、選択中のノート情報を取得する方法がわからなかったので断念。 一手間増えてしまいますが、一覧から一度開いて個別ウィンドウを立ち上げた状態でスクリプトを走らせる仕様になりました。

    製作時間・発言の推移

    つぶやきながら作成w 途中でMarsEditのPreview用のテンプレートを編集したくなり2時間ほど、横道にそれる。 実質の作業時間は5時間程。 全然大したコードは書いていないのですが、探り探りだったので時間がかかってしまいました。 今回結構勝手がわかったので、ようやくUWSCから離れて、AppleScriptに移行していけそうです。

    ん!?ちょっと待てよ、EvernoteってHTMLでノートがエクスポートできたはず。ということはタグとかも反映されてるのか?mars editにペタって貼ればOK的な状況になるのか???ちょっと試してみるless than a minute ago via Twitter for Mac Favorite Retweet Reply

    なるほどHTMLでEvernoteを書きだすと,タグとかはメタタグで出力されんのか。なんかスクリプトみたいのでいけるきがしてきたな。誰かEvernoteで出力したHTMLをMarsEditに流しこむスクリプト作ってくれないだろうか?この際だからAppleScript勉強してみるかless than a minute ago via Twitter for Mac Favorite Retweet Reply

    流れは、1下書き状態の記事(Evernote). 2 1を選択してHTMLでエクスポート。3 2でエクスポートしたHTMLをMarsEditに流す。あれ?Evernoteってスクリプト使えるんだっけ?もしそれなら、HTML出力とかしないでダイレクトにMarsEditいけるのかな?less than a minute ago via Twitter for Mac Favorite Retweet Reply

    意外と速く進んでる。今日中に公開出来るかも。つか需要あんのかな?less than a minute ago via Twitter for Mac Favorite Retweet Reply

    この機能は今回見送り↓

    どなたか選択中(単体)のEvernoteのノートの値を取得するやり方ご存知の方いらっしゃいませんか? tell note 1 で値自体は取得できたんですけど、それだとノートブックの一番上のノートの情報だけなんですよ。任意に選択したノートの値を取得したい次第です。less than a minute ago via Twitter for Mac Favorite Retweet Reply

    意外と速く進んでる。今日中に公開出来るかも。つか需要あんのかな?less than a minute ago via Twitter for Mac Favorite Retweet Reply

    コードはこちら

    初心者丸出しのコードですが、希望の動作は出来ているので、まずはこれで良しとします。 スーパープログラマの方が颯爽とやってきて、「こんな風にしたらどうだい?」ってな感じでコードを綺麗にしてくれるの待ってますw 置き換えの部分で使っている関数は http://www.tonbi.jp/AppleScript/tips/String/FindReplace.html で公開されているコードを拝借させていただきました。 [cc] tell application "MarsEdit" to activate --起動確認。MarsEditが起動していなければ起動 delay 1 tell application "Evernote" --Evernoteから情報を取得 activate tell window 1 tell note 1 set etitle to get title set tagC to get tags set tagL to length of tagC set tagB to "" repeat with i from 1 to tagL set tagT to (item i of tagC) set tagB to tagB & "," & name of tagT end repeat set content to get ENML content --余計なHTMLタグは無視し本文だけを抜き出す end tell end tell end tell set content to replaceText(content, "< ?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>", "") set content to replaceText(content, "", "") set content to replaceText(content, "< !DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">", "") set content to replaceText(content, " ", "") set content to replaceText(content, "
    ", "") set content to replaceText(content, "
    ", "
    ") set content to content & "

    あとがき

    " tell application "System Events" --MarsEditで新規記事を起動 tell process "MarsEdit" activate tell menu bar 1 tell menu "File" pick menu item "New Post" end tell end tell end tell end tell delay 1 tell application "MarsEdit" --MarsEditにEvernoteで取得した情報を流しこむ。 set title of document 1 to etitle set tags of document 1 to tagB set body of document 1 to content activate end tell tell application "Evernote" close window 1 --開いた個別記事のウィンドウを閉じる end tell --置換用関数(引用) on replaceText(theText, serchStr, replaceStr) set tmp to AppleScript's text item delimiters set AppleScript's text item delimiters to serchStr set theList to every text item of theText set AppleScript's text item delimiters to replaceStr set theText to theList as string set AppleScript's text item delimiters to tmp return theText end replaceText [/cc]

    ダウンロードはこちらから

    Ever2Note.scpt ダウンロードいただけた方は是非Twitterなどでフィードバックをいただけると嬉しいです。 MarsEdit - the blog editor for WordPress, Tumblr, Blogger and more. App
    カテゴリ: ソーシャルネットワーキング
    価格: ¥3,450
    Evernote App
    カテゴリ: 仕事効率化
    価格: 無料

    あとがき

    他にもAppleScriptは作ってるんですが、ネタはあるんだけどグッとくるネタがなくてここ何日か悶々としてました。 そのかわり、Evernoteにネタを集約したりとかそういう自分の中での決め事を色々決めたり、修正したりしてたのですが、Twitterは毎日やってるからこっちと並行して日刊をやろうかなと思います。 日刊は基本毎日更新だけど、自分のTwitterの発言をまとめたりするもっとゆるい感じにしようかなと。 このブログもタイトル「ライフログ」なんですけどねw