UWSC+GASで指定時間に自動でスプレッドシートから出品ファイルLを作成しアマゾンセラーセントラルにアップロード

#目的
スプレットシート上で出品ファイルLの情報を入力しておいて、その情報を毎日自動で定期的にアマゾンセラーセントラルにアップロードしたいと思い作成しました。

#フロー
特定の時間になったらChromeを開く
↓
GAS Webアプリケーションにアクセスして出品ファイルLをGoogleドライブ上に作成し直ダウンロードリンクを取得
↓
取得したダウンロードリンクにアクセスしファイルをダウンロードフォルダに保存
↓
セラーセントラルのファイルアップロードページにアクセスし、ファイルをアップロード
↓
ダウンロードしたファイルを削除
↓
Chromeを閉じる

#実行環境
・Windows Server 2012（UWSCが動けばいいのでWindows10などでももちろんOK）
・メモリ2GB
・PCが起動している必要がある（当方はクラウドデスクトップを使用しました）

#事前準備
・[UWSC](https://www.vector.co.jp/soft/winnt/util/se115105.html)をダウンロード→解凍しておく
・amazon_auto_upload.uwsをUWSC.exeと同じディレクトリに入れてスケジューラーを設定しておく
・[Google Chrome](https://www.google.com/intl/ja_ALL/chrome/)をダウンロード・インストール→[アマゾンセラーセントラル](sellercentral.amazon.co.jp)にログインして二段階認証を突破しておく
・[このスプレッドシート](https://docs.google.com/spreadsheets/d/1ZwQMoVV6mjAHA6GLhNmWRleRrRldW5IAPP0TDKCXp8M/edit?usp=sharing)に出品情報を記入しておく
・スプレッドシートのスクリプトエディタに出品ファイルL作成.gsをコピペしておく
・スクリプトエディタでライブラリ underscoreGS を追加しておく（ライブラリキー 1yzaSmLB2aNXtKqIrSZ92SA4D14xPNdZOo3LQRH2Zc6DK6gHRpRK_StrT）
・スクリプトエディタでWebアプリケーションとして導入しURLを取得しておく

#GASコード
```出品ファイルL作成.gs
'use strict';
function doGet(e){

//***1. スプレッドシートの値を取得してtsvファイルにする***
  const sp = SpreadsheetApp.openById('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); //スプレッドシートのIDを入れる
  const sh = sp.getSheetByName('出品ファイルL');
  const values = sh.getDataRange().getValues();
  
  const String = underscoreGS._map(values,function(row){
    return row.join('\t'); 
  }).join("\r\n");
  
  const blob = Utilities.newBlob("",'text/tsv' , '出品ファイルL').setDataFromString(String, "Shift_JIS");
  const tsv = blob.getAs(MimeType.PLAIN_TEXT);
  
//***2. 作成したtsvをGoogleドライブに保存してダウンロードリンクを取得***
  const file_id = DriveApp.createFile(tsv).getId();
  const direct_download_url = "https://drive.google.com/uc?export=download&id=" + file_id;
  
//***3. ダウンロードリンクをreturn***
  return ContentService.createTextOutput(direct_download_url);
}

```

#UWSCコード
```amazon_auto_upload.uws

//***1. Chromeを開く（すでにChromeを開いている場合は一度閉じて開き直す）***
//***Chromeが開くのに20秒かかると想定（かなり余裕を持ってます）***
CTRLWIN(GETID("Google Chrome"),CLOSE)
CHROME = EXEC("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
SLEEP(20)

//***2. 出品ファイルLを作成してダウンロード***
//GASウェブアプリケーションにアクセス
CTRLWIN(CHROME, ACTIVATE)
URL="xxxxxxxxxxxxxxxx" //⑧でコピーしたURLを入力
SENDSTR(CHROME, URL,1,TRUE)
KBD(VK_RETURN,CLICK)
SLEEP(60) //1分待機

//表示されたリンクにアクセスして出品ファイルをダウンロード
KBD(VK_CTRL,DOWN)
KBD(VK_A,CLICK,500)
KBD(VK_C,CLICK,500) 
KBD(VK_T,CLICK,500) 
KBD(VK_V,CLICK,500) 
KBD(VK_CTRL,UP)
KBD(VK_RETURN,CLICK)
SLEEP(20)

//***3. アマゾンセラーセントラルにアクセスしてファイルをアップロード***
//ファイルアップロードページにアクセス
URL="https://sellercentral-japan.amazon.com/listing/upload"
SENDSTR(CHROME, URL,1,TRUE)
KBD(VK_RETURN,CLICK) 
SLEEP(20)

//コンソールを開いてJavascriptを実行し、ファイル選択ダイヤログを出す
kbd(VK_F12,CLICK,100)
SLEEP(10)
R = PASTE_("document.getElementsByName('feed')[1].click();")
KBD(VK_RETURN,CLICK)
SLEEP(10)

//ファイルパスを直接入力して選択する
R = PASTE_("C:\Users\Administrator\Downloads\出品ファイルL.txt")
KBD(VK_RETURN,CLICK)
SLEEP(2) 

//アップロードボタンを押す
CTRLWIN(CHROME, ACTIVATE)
//コンソールにカーソルを合わせるため一度コンソールを閉じて再度開く
kbd(VK_F12,CLICK,100) 
SLEEP(10)
kbd(VK_F12,CLICK,100)
SLEEP(10)

PASTE_("document.getElementsByName('upload-submit-button')[0].click()")
KBD(VK_RETURN,CLICK)

//***4. アップロードしたファイルを消しとく***
DOSCMD("del C:\Users\Administrator\Downloads\出品ファイルL.txt",FALSE,FALSE)

//***5. Chromeを閉じる***
CTRLWIN(GETID("Google Chrome"),CLOSE)

//終了-------------------------------------------------------------

//***引数をクリップボードに送りペーストする自作関数***
FUNCTION PASTE_(Str)
    SENDSTR(0,Str)
    KBD(VK_CTRL,DOWN)
    KBD(VK_V,CLICK,100)
    KBD(VK_CTRL,UP)
    RESULT = Str
FEND

```


#追伸
UWSCは開発終了してしまったので、AutoITなどに移行しなければならないですね。
非常に手軽強力なツールであったのにも関わらず残念です。