目的
スプレットシート上で出品ファイルLの情報を入力しておいて、その情報を毎日自動で定期的にアマゾンセラーセントラルにアップロードしたいと思い作成しました。
フロー
特定の時間になったらChromeを開く
↓
GAS Webアプリケーションにアクセスして出品ファイルLをGoogleドライブ上に作成し直ダウンロードリンクを取得
↓
取得したダウンロードリンクにアクセスしファイルをダウンロードフォルダに保存
↓
セラーセントラルのファイルアップロードページにアクセスし、ファイルをアップロード
↓
ダウンロードしたファイルを削除
↓
Chromeを閉じる
実行環境
・Windows Server 2012(UWSCが動けばいいのでWindows10などでももちろんOK)
・メモリ2GB
・PCが起動している必要がある(当方はクラウドデスクトップを使用しました)
事前準備
・UWSCをダウンロード→解凍しておく
・amazon_auto_upload.uwsをUWSC.exeと同じディレクトリに入れてスケジューラーを設定しておく
・Google Chromeをダウンロード・インストール→アマゾンセラーセントラルにログインして二段階認証を突破しておく
・このスプレッドシートに出品情報を記入しておく
・スプレッドシートのスクリプトエディタに出品ファイルL作成.gsをコピペしておく
・スクリプトエディタでライブラリ underscoreGS を追加しておく(ライブラリキー 1yzaSmLB2aNXtKqIrSZ92SA4D14xPNdZOo3LQRH2Zc6DK6gHRpRK_StrT)
・スクリプトエディタでWebアプリケーションとして導入しURLを取得しておく
GASコード
'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コード
//***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などに移行しなければならないですね。
非常に手軽強力なツールであったのにも関わらず残念です。