0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-09-08

目的

スプレットシート上で出品ファイル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コード

出品ファイル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などに移行しなければならないですね。
非常に手軽強力なツールであったのにも関わらず残念です。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?