Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

取引ナビで追跡番号を知らせる。(ヤフオク個人出品者向け ブックマークレット)

More than 1 year has passed since last update.

はじめに。

取引ナビで追跡番号や、追跡用のURLを「こっちでコピーして、こっちでペーストして」というのが、面倒になって作ったものです。

俺は そうやってると言うだけの話ですが、基本的にクリックポストのサイトやWEBゆうプリから追跡番号をコピーしてくることを想定して作っています。

promptもどき(表示される入力欄)に手入力しても特に問題はありません。

動作確認環境

Windows 10
Google Chrome 67

使い方。

まず、ヤフオクの取引ナビで落札者の名前を確認します。
次に、クリックポストWEBゆうプリのサイトから、その人の追跡番号をコピーしてきます。
取引ナビで [ 発送連絡をする ]ボタンをクリックします。

そこで、このブックマークレットを起動し、promptもどきに追跡番号を入力します。

数字を12桁入力した時点で、勝手に次に進みます。
(特定記録は11桁ですので、手動で[ OK ]をクリックする必要があります)

「追跡番号」と「配送状況確認ページURL」に自動で入力し[ 確認する ]ボタンも勝手に押されます。

このときに、「配送状況確認ページURL」に入力されたページをウィンドウで表示します。
(確認用で表示しているだけですので、これが鬱陶しい場合はコード内に書かれてある一行を削除して下さい)

ページ遷移後の[ 決定する ]ボタンは、自分で押して下さい。

コード。

特に難しいことはしていませんし、細かい説明はコードのコメントを読んでもらえれば分かるかと思います。

javascript:void(function(){

/* 発送連絡のページであることをチェック */

var url02 = location.href.substr(0,48);
if ((url02 != "https://contact.auctions.yahoo.co.jp/seller/edit" ) && (url02 != "https://contact.auctions.yahoo.co.jp/seller/subm" )) { 

    alert("「取引ナビ」の「発送連絡 入力」の画面で実行してください。");

} else {

    /* prompt もどき を表示 */

    var sc = document.scrollingElement.scrollTop; 

    var text = document.createElement("span");

    var prm = "追跡番号を入力して下さい。<br><br>(数字を12桁入力すると、勝手に次の画面へ進みます)<br><br>";
    prm += "<input type=text id=memo size=20 placeholder='追跡番号' value=''><br><br>";
    prm += "<input type=button id=ok value='OK'>&nbsp;";
    prm += "<input type=button id=cancel value='キャンセル'>";
    text.innerHTML=prm;

    var ts = text.style;

    ts.color = '#000';
    ts.backgroundColor = 'white';
    ts.padding = '15px';
    ts.border = '1px solid gainsboro';
    ts.boxShadow = '3px 3px 10px';
    ts.zIndex = '100';

    document.body.appendChild(text);

    ts.position = 'absolute'; 
    ts.top = 50 + sc + 'px'; 
    ts.left = (window.innerWidth / 2)-(text.offsetWidth / 2) + 'px'; 

    /* promptもどきのイベント関係の処理とか */

    var m=document.getElementById('memo');
    m.focus();
    m.onkeyup = input_check;

}

/* [OK]を押した場合、次の処理へ。(入力文字数のチェックはしていない) */

document.getElementById('ok').onclick = next;

function next() { 

    var num=m.value.trim();

    if(num){

        /* 追跡番号と追跡用のURLをFORMに入力 */

        var url='https://trackings.post.japanpost.jp/services/srv/search/direct?reqCodeNo1=' + num;

        document.getElementsByName("shipInvoiceNumReg")[1].checked=true;
        document.getElementsByName("shipInvoiceNumber1")[0].value=num;
        document.getElementsByName("shipUrl")[0].value=url;

        /* 新しいウィンドウで このURLを開く(数字が間違ってないかの確認用なので、それが不要なら この一行は削っていい) */ 

        window.open(url, 'newwindow', "width=960,height=700");

        /* 「確認する」ボタンを 自動で押す。*/ 

        var arrs=document.getElementsByTagName("input");
        for(i=0;i<arrs.length;i++){ if(arrs[i].value=="確認する"){ arrs[i].click();} } ;

    }

    cls();

}

/* 数字12桁(クリックポスト等の追跡番号)が入力されたら、[OK]を押さなくても自動で次の処理へ進む。 */

function input_check() {
    var mc = m.value.replace(/[^0-9]/g, '');
    if (mc.length > 11) next();
}

/* [キャンセル]を押した場合は、ただ閉じる。 */

document.getElementById('cancel').onclick = cls;

function cls() { document.body.removeChild(text); }

}())

おわりに。

一応、自分でも使ってますが、ちょいちょい手直しを加えていったものなので、どこか おかしいかもしれません。

gpk
基本的に自分がヤフオクやメルカリで使用しているブックマークレットを公開していく予定です。 正直、難しいことは全くしていませんし、目新しいこともしていませんので、こういう技術系のサイトに公開するのもどうかと思ったのですが、自分でサイト自体を作るのも面倒くさくて。 でも、ここじゃJavaScriptが動かないので、いずれ どこかに作らなきゃな~とは思ってます。(結局、何もしていない)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away