UWSCで代入した値の中にある指定キーワードの数を数える方法
フォルダアクション作ってみました。スクショをリネーム&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項目を移動※移動先のフォルダを指定 例:ピクチャ
となります。以下の画像のような感じになります。
これで予め指定したフォルダに画像を放りこめば、勝手にファイル名と形式を変更して
指定したフォルダに移動してくれるようになりました。
画像の投稿がだいぶ楽になりました!
Visual Auctionで出力した伝票を元にヤマト運輸に集荷依頼をかけるUWSCスクリプト
※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]Ever2Mars 〜Macなブロガー必見!?Evernoteにストックしたブログネタを一瞬で MarsEditに転送するAppleScript〜を作りました。
Evernoteの個別記事をMarsEditに送るAppleScript「Ever2Mars」を作りました。
ダウンロードはこちらから
直接実行しても大丈夫ですが、LaunchBarやQuickSilverなどのランチャーから呼び出して使うと便利です。 Ever2Note.scpt※使用方法
- Evernoteを開きます。
- EvernoteからMarsEditに送りたい記事を個別ウィンドウで開いてください。
- Ever2Marsを実行
こんな風に動作します
[youtube]http://www.youtube.com/watch?v=bWuYiauX2tU[/youtube]開発理由:Evernoteからコピペするのがメンドクサイ
MarsEditを使い始めてから、ずっとEvernoteとMarsEdit両方に書きかけのネタが保存されていて、勝手が悪かったのでどちらかに統一したいなと検討。 バックアップや移動中にも編集が出来ることなどを考えてEvernoteにネタはまとめることにしたのですが、いざ、記事を書くとなると、タイトルをコピーしたり、本文をコピーしたり、メンドクサイことに気づいたのです。 ブログはこれからも書き続けていくので、その都度コピペを繰り返すのは嫌だと思いなんとか出来ないものかと考えたところ、どうやらMarsEditがAppleScriptに対応しているようだということが判明。 EvernoteがAppleScriptに対応していることは知っていたので、勉強を兼ねて作ってみることにしました。意外と速く完成
このアイディアをつぶやいたのが閃いた直後の約7時間前。 ここから作業を開始しました。Evernoteに記事をストックという前提で、Evernoteにストックする際にタグとかをつけるわけで、いざ記事を書く段階になったら、そのタグをMarseditに反映するようなプログラムあったらいいなとおもったり。したら書くの楽チンだな
途中で仕様変更
当初はEvernoteから当該ノートをHTML形式でエクスポートしてそのファイルをMarsEditで読み込ませようと考えていましたが、どうやらAppleScriptを使えば、わざわざHTML出力することなく、ノートのデータが取得できることが判明。 よって、該当ノートを選択→スクリプト実行→自動でMarsEditが立ち上がり、記事が流し込まれるという仕様に。 当初は記事の一覧で流し込みたい記事を選択してスクリプトを走らせれば、MarsEditにデータが流れるようにしたかったのですが、選択中のノート情報を取得する方法がわからなかったので断念。 一手間増えてしまいますが、一覧から一度開いて個別ウィンドウを立ち上げた状態でスクリプトを走らせる仕様になりました。製作時間・発言の推移
つぶやきながら作成w 途中でMarsEditのPreview用のテンプレートを編集したくなり2時間ほど、横道にそれる。 実質の作業時間は5時間程。 全然大したコードは書いていないのですが、探り探りだったので時間がかかってしまいました。 今回結構勝手がわかったので、ようやくUWSCから離れて、AppleScriptに移行していけそうです。ん!?ちょっと待てよ、EvernoteってHTMLでノートがエクスポートできたはず。ということはタグとかも反映されてるのか?mars editにペタって貼ればOK的な状況になるのか???ちょっと試してみる
なるほどHTMLでEvernoteを書きだすと,タグとかはメタタグで出力されんのか。なんかスクリプトみたいのでいけるきがしてきたな。誰かEvernoteで出力したHTMLをMarsEditに流しこむスクリプト作ってくれないだろうか?この際だからAppleScript勉強してみるか
流れは、1下書き状態の記事(Evernote). 2 1を選択してHTMLでエクスポート。3 2でエクスポートしたHTMLをMarsEditに流す。あれ?Evernoteってスクリプト使えるんだっけ?もしそれなら、HTML出力とかしないでダイレクトにMarsEditいけるのかな?
意外と速く進んでる。今日中に公開出来るかも。つか需要あんのかな?
どなたか選択中(単体)のEvernoteのノートの値を取得するやり方ご存知の方いらっしゃいませんか? tell note 1 で値自体は取得できたんですけど、それだとノートブックの一番上のノートの情報だけなんですよ。任意に選択したノートの値を取得したい次第です。
意外と速く進んでる。今日中に公開出来るかも。つか需要あんのかな?
コードはこちら
初心者丸出しのコードですが、希望の動作は出来ているので、まずはこれで良しとします。 スーパープログラマの方が颯爽とやってきて、「こんな風にしたらどうだい?」ってな感じでコードを綺麗にしてくれるの待ってます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, "あとがき
ダウンロードはこちらから
Ever2Note.scpt ダウンロードいただけた方は是非Twitterなどでフィードバックをいただけると嬉しいです。 MarsEdit - the blog editor for WordPress, Tumblr, Blogger and more.カテゴリ: ソーシャルネットワーキング
価格: ¥3,450
Evernote
カテゴリ: 仕事効率化
価格: 無料