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 3 years have passed since last update.

動機

Amazonのセラーセントラルに、クリックポストの追跡番号を1つ1つ入力する仕事に嫌気が差し、精神崩壊する前に自動化を図った。

概要

本内容は以下の2部構成です。

①クリックポストのページで追跡番号リストを半自動ダウンロード
②Amazonのセラーセントラルで追跡番号リストを読み込み、自動入力

当ページでは、②の自動入力スクリプトを記載します。

①がまだの方は、クリックポスト追跡番号一括読み込み(準備編) からどうぞ。

使い方

1.Tampermonkeyをインストール

2.Amazonセラーセントラルの「注文管理」→「選択した商品の出荷通知を行う」→「GO」

3.「複数商品の出荷通知」の下に、ファイル選択ボタンが追加されるので、クリック
19.jpg

4.clickpost*.txtのファイルを全て選択
 23.jpg

5.出荷通知の「お届け先住所」の名前と、クリックポストの名前が完全一致すると、追跡番号が自動入力される
※一致しない場合(半角/全角スペースなど)・追跡番号がない場合は、セラーセントラルの入力ボックスは空のままになります。

(注意)クリックポストのファイルを再読込したいとき、1回目と同じ物を選択した場合、再読込は行われません。そのため、同じファイルを読み込みたいときは、ページをリロードしてから、選択し直してください。

スクリプト

// ==UserScript==
// @name         Amazon Seller Tracking Number
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://sellercentral.amazon.co.jp/gp/orders-v2/bulk-confirm-shipment/ref=ag_bulkconf_cont_myo?ie=UTF8&orderID=*
// @grant        none
// @require      http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';

    if (window.File && window.FileReader && window.FileList && window.Blob) {
    // Great success! All the File APIs are supported.
    } else {
        alert('The File APIs are not fully supported in this browser.');
    }

    // clickpostファイル読み込みボタン設置
    var div_element = $('<div></div>');
    div_element.html('<input type="file" multiple id="clickpost">');
    div_element.insertBefore($('#myo-cms'));

    // clickpostボタンの動作内容
    var clickpost_data = '';
    $('#clickpost').on('change',  function(){

        // 未出荷の宛名リスト読込
        var row = $('#myo-cms > table.data-display')[0].rows;
        var data = [];
        for(var i = 0; i < row.length - 1; i++){
            var tr_num = i + 2;
            data[i] = $('#myo-cms > table.data-display > tbody > tr:nth-child(' + tr_num + ') > td:nth-child(3)').html();
            data[i] = data[i].replace(/\n/g, '');
            data[i] = data[i].replace('', '');
            data[i] = data[i].split('<br>');
            data[i] = data[i][data[i].length - 2];
        }

        // clickpostデータ読込
        var clickpost = $('#clickpost').prop('files');
        for(var j = 0; j < clickpost.length; j++){
            var reader = new FileReader();
            reader.onload = function(e){
                clickpost_data = clickpost_data + e.target.result;
            };
            reader.readAsText(clickpost[j]);
        }

        setTimeout(function(){

            // データ整形
            var split_data = clickpost_data.split('\n');
            split_data.pop();
            var clickpost_all_data = [];
            for(var i = 0; i < split_data.length; i++){
                clickpost_all_data.push(split_data[i].replace('\r', '').split(','));
            }

            // データマッチ
            for(var j = 0; j < data.length; j++){
                for(var k = 0; k < clickpost_all_data.length; k++){
                    if(data[j] === clickpost_all_data[k][1]){
                        // 追跡番号挿入
                        var tr_num = j + 2;
                        $('#myo-cms > table.data-display > tbody > tr:nth-child(' + tr_num + ') > td:nth-child(4) > input').val(clickpost_all_data[k][0]);
                        break;
                    }
                }
            }


        },500);

    });

})();
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