クリックポスト追跡番号一括読み込み（実行編）

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

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

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

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

①がまだの方は、[クリックポスト追跡番号一括読み込み（準備編）](https://qiita.com/yuki_tanaka_lib/items/aefb6f4422526d17490f) からどうぞ。

# 使い方

1.[Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja)をインストール

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

3.「複数商品の出荷通知」の下に、ファイル選択ボタンが追加されるので、クリック
![19.jpg](https://qiita-image-store.s3.amazonaws.com/0/227525/3d9749d3-a30f-931b-589d-d24a43d5961c.jpeg)

4.clickpost*.txtのファイルを全て選択
　![23.jpg](https://qiita-image-store.s3.amazonaws.com/0/227525/05c63fec-5670-7276-9c51-fd14bfd3654e.jpeg)

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

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

# スクリプト

```javascript
// ==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);

    });

})();
```