質問編集履歴

3 試してみたことの誤った記述を削除しました。

zummy

zummy score 14

2018/07/04 09:34  投稿

Welcart 一括商品登録をcronで自動実行したい
### 前提・実現したいこと
Welcart+DLSeller(デジタルコンテンツ販売用のプラグイン)を利用して
デジタルデータのダウンロード販売サイトを運営しております。
商品登録を、次の手順で行っております。
1.) WordPressのwp-content/uploadsフォルダに直接デジタルデータをアップロード
2.) Media from FTP Add On Commandlineを使ったシェルスクリプトをcronで自動実行させており、
WordPressにメディア登録されていないデジタルデータをメディア登録
3.) 管理画面 [Welcart Shop] - [商品マスター]にアクセス
4.) 操作フィールドの「商品一括登録」ボタンをクリック
5.) 商品一括登録用CSVを作成 (シェルスクリプトで一括作成)
6.) 事前に作成しておいた商品一括登録用CSVをアップロード
しかし、
短い間隔で多数の商品を登録するため、
上記手順3.)〜6.)にかかる担当者の工数が無視できなくなってきました。
そこでこの手順を少しでも簡略化したいと考えております。
[Welcart オンライン・マニュアル|ECサイト構築プラグイン > 管理画面マニュアル > 商品マスター](https://www.welcart.com/documents/manual-2/%E5%95%86%E5%93%81%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC)
この一連の処理をGUIの操作ではなく、シェルスクリプトで実行したいのです。
### 試してみたこと
事前準備として、送品一括登録用CSVをサーバ上に作成しておきます。(手順5.)
手順3,4,6)をcURLを使うことで実現できるのでは・・・と期待したのですが
思うような動作になっておりません。
```ここに言語を入力
$ curl --data 'log=(WORDPRESSユーザID)&pwd=(WordPressユーザパスワード)' https://(ドメイン名)/wp-login.php -c ./cookie.txt
$ curl -X POST -F "usces_upcsv=@./usces_item_list.csv" -F upload_mode=all -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' --include
```
(参考にしたURL)
[Welcart 商品一括登録(csv)をcronによる自動起動で実行する | クラウドロジスティクス](http://crowd-logic.com/blog/archives/29768)
ログインは成功しているようなのですが、
その後のPOSTが上手く動作しておりません。
商品一括登録用CSV(usces_item_list.csv)はWordPressの「wp-uploads」フォルダに
アップロードされていることは確認できています。
以下レスポンスがありました。
(レスポンス)
> HTTP/1.1 100 Continue
>
> HTTP/1.1 302 Found
> Server: nginx
> Date: Tue, 03 Jul 2018 00:41:16 GMT
> Content-Type: text/html; charset=UTF-8
> Content-Length: 0
> Connection: keep-alive
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache, must-revalidate
> Pragma: no-cache
> Location: https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&usces_status=none&usces_message=&action=upload_register&mode=all&regfile=UmVnaXN0UHJvZHVjdHNfMTUzMDU3ODQ3Ni5jc3Y=
X-Original-Date: Tue, 03 Jul 2018 00:41:16 GMT
X-UA-Device: pc
上記のLocationに記載されているURLにブラウザでアクセスしてみたところ商品登録が行われたため、
以下を追加で実行してみました。
```ここに言語を入力
$ curl -X POST -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' --include
```
(レスポンス)
> HTTP/1.1 302 Found
> Server: nginx
> Date: Tue, 03 Jul 2018 02:00:27 GMT
> Content-Type: text/html; charset=UTF-8
> Content-Length: 0
> Connection: keep-alive
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache, must-revalidate
> Pragma: no-cache
> Location: https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&usces_status=error&usces_message=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82
> X-Original-Date: Tue, 03 Jul 2018 02:00:27 GMT
> X-UA-Device: pc
レスポンス中のLocation内usces_messageをURLデコードすると
「ファイルをアップロードできませんでした。」とのことでした。
前の手順でアップロードしたファイルを参照できていないのでしょうか。
上記のLocationに記載されているURLにブラウザでアクセスしてみたところ商品登録が行われました。
cronで自動実行するために、どこを修正すれば良いか、ご教授いただけないでしょうか。
よろしくお願いいたします。
### 補足情報(FW/ツールのバージョンなど)
WordPress バージョン 4.9.5
welcart バージョン 1.9.10
DLSeller バージョン 2.1.14
cURL 7.29.0
  • PHP

    38120 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • cron

    363 questions

    cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

  • cURL

    371 questions

    cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

  • WordPress

    15503 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • シェルスクリプト

    480 questions

    シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

2 cURLのバージョンを追記しました。

zummy

zummy score 14

2018/07/03 11:14  投稿

Welcart 一括商品登録をcronで自動実行したい
### 前提・実現したいこと
Welcart+DLSeller(デジタルコンテンツ販売用のプラグイン)を利用して
デジタルデータのダウンロード販売サイトを運営しております。
商品登録を、次の手順で行っております。
1.) WordPressのwp-content/uploadsフォルダに直接デジタルデータをアップロード
2.) Media from FTP Add On Commandlineを使ったシェルスクリプトをcronで自動実行させており、
WordPressにメディア登録されていないデジタルデータをメディア登録
3.) 管理画面 [Welcart Shop] - [商品マスター]にアクセス
4.) 操作フィールドの「商品一括登録」ボタンをクリック
5.) 商品一括登録用CSVを作成 (シェルスクリプトで一括作成)
6.) 事前に作成しておいた商品一括登録用CSVをアップロード
しかし、
短い間隔で多数の商品を登録するため、
上記手順3.)〜6.)にかかる担当者の工数が無視できなくなってきました。
そこでこの手順を少しでも簡略化したいと考えております。
[Welcart オンライン・マニュアル|ECサイト構築プラグイン > 管理画面マニュアル > 商品マスター](https://www.welcart.com/documents/manual-2/%E5%95%86%E5%93%81%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC)
この一連の処理をGUIの操作ではなく、シェルスクリプトで実行したいのです。
### 試してみたこと
事前準備として、送品一括登録用CSVをサーバ上に作成しておきます。(手順5.)
手順3,4,6)をcURLを使うことで実現できるのでは・・・と期待したのですが
思うような動作になっておりません。
```ここに言語を入力
$ curl --data 'log=(WORDPRESSユーザID)&pwd=(WordPressユーザパスワード)' https://(ドメイン名)/wp-login.php -c ./cookie.txt
$ curl -X POST -F "usces_upcsv=@./usces_item_list.csv" -F upload_mode=all -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' --include
```
(参考にしたURL)
[Welcart 商品一括登録(csv)をcronによる自動起動で実行する | クラウドロジスティクス](http://crowd-logic.com/blog/archives/29768)
ログインは成功しているようなのですが、
その後のPOSTが上手く動作しておりません。
商品一括登録用CSV(usces_item_list.csv)はWordPressの「wp-uploads」フォルダに
アップロードされていることは確認できています。
以下レスポンスがありました。
(レスポンス)
> HTTP/1.1 100 Continue
>
> HTTP/1.1 302 Found
> Server: nginx
> Date: Tue, 03 Jul 2018 00:41:16 GMT
> Content-Type: text/html; charset=UTF-8
> Content-Length: 0
> Connection: keep-alive
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache, must-revalidate
> Pragma: no-cache
> Location: https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&usces_status=none&usces_message=&action=upload_register&mode=all&regfile=UmVnaXN0UHJvZHVjdHNfMTUzMDU3ODQ3Ni5jc3Y=
X-Original-Date: Tue, 03 Jul 2018 00:41:16 GMT
X-UA-Device: pc
上記のLocationに記載されているURLにブラウザでアクセスしてみたところ商品登録が行われたため、
以下を追加で実行してみました。
```ここに言語を入力
$ curl -X POST -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' --include
```
(レスポンス)
> HTTP/1.1 302 Found
> Server: nginx
> Date: Tue, 03 Jul 2018 02:00:27 GMT
> Content-Type: text/html; charset=UTF-8
> Content-Length: 0
> Connection: keep-alive
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache, must-revalidate
> Pragma: no-cache
> Location: https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&usces_status=error&usces_message=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82
> X-Original-Date: Tue, 03 Jul 2018 02:00:27 GMT
> X-UA-Device: pc
レスポンス中のLocation内usces_messageをURLデコードすると
「ファイルをアップロードできませんでした。」とのことでした。
前の手順でアップロードしたファイルを参照できていないのでしょうか。
cronで自動実行するために、どこを修正すれば良いか、ご教授いただけないでしょうか。
よろしくお願いいたします。
### 補足情報(FW/ツールのバージョンなど)
WordPress バージョン 4.9.5
welcart バージョン 1.9.10
DLSeller バージョン 2.1.14
Media from FTP バージョン 10.04
Media from FTP Add On Commandline バージョン 1.08
cURL 7.29.0
  • PHP

    38120 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • cron

    363 questions

    cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

  • cURL

    371 questions

    cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

  • WordPress

    15503 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • シェルスクリプト

    480 questions

    シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

1 解決のための具体的な手法を追記しました。

zummy

zummy score 14

2018/07/03 11:09  投稿

Welcart 一括商品登録をcronで自動実行したい
### 前提・実現したいこと
Welcart+DLSeller(デジタルコンテンツ販売用のプラグイン)を利用して
デジタルデータのダウンロード販売サイトを運営しております。
商品登録を、次の手順で行っております。
1.) WordPressのwp-content/uploadsフォルダに直接デジタルデータをアップロード
2.) Media from FTP Add On Commandlineを使ったシェルスクリプトをcronで自動実行させており、
WordPressにメディア登録されていないデジタルデータをメディア登録
3.) 管理画面 [Welcart Shop] - [商品マスター]にアクセス
4.) 操作フィールドの「商品一括登録」ボタンをクリック
5.) 商品一括登録用CSVを作成 (シェルスクリプトで一括作成)
6.) 事前に作成しておいた商品一括登録用CSVをアップロード
しかし、
短い間隔で多数の商品を登録するため、
上記手順3.)〜6.)にかかる工数が無視できなくなってきました。
上記手順3.)〜6.)にかかる担当者の工数が無視できなくなってきました。
そこでこの手順を少しでも簡略化したいと考えております。
[Welcart オンライン・マニュアル|ECサイト構築プラグイン > 管理画面マニュアル > 商品マスター](https://www.welcart.com/documents/manual-2/%E5%95%86%E5%93%81%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC)
この一連の処理をGUIの操作ではなく、シェルスクリプトで実行するには
どのように改修すれば良いでしょうか。
この一連の処理をGUIの操作ではなく、シェルスクリプトで実行したいのです。
解析しようと試みたのですが、私のスキルでは敵いませんでした・・・。  
「このファイルの●●って関数に処理内容が記載されているよ」といった
アドバイスでも構いませんので、お知恵をお借りできると助かります。
### 試してみたこと
事前準備として、送品一括登録用CSVをサーバ上に作成しておきます。(手順5.)
手順3,4,6)をcURLを使うことで実現できるのでは・・・と期待したのですが
思うような動作になっておりません。
```ここに言語を入力  
$ curl --data 'log=(WORDPRESSユーザID)&pwd=(WordPressユーザパスワード)' https://(ドメイン名)/wp-login.php -c ./cookie.txt  
 
$ curl -X POST -F "usces_upcsv=@./usces_item_list.csv" -F upload_mode=all -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' --include  
```  
 
(参考にしたURL)  
[Welcart 商品一括登録(csv)をcronによる自動起動で実行する | クラウドロジスティクス](http://crowd-logic.com/blog/archives/29768)  
 
ログインは成功しているようなのですが、  
その後のPOSTが上手く動作しておりません。  
商品一括登録用CSV(usces_item_list.csv)はWordPressの「wp-uploads」フォルダに  
アップロードされていることは確認できています。  
以下レスポンスがありました。  
 
(レスポンス)  
> HTTP/1.1 100 Continue  
>  
> HTTP/1.1 302 Found  
> Server: nginx  
> Date: Tue, 03 Jul 2018 00:41:16 GMT  
> Content-Type: text/html; charset=UTF-8  
> Content-Length: 0  
> Connection: keep-alive  
> Expires: Thu, 19 Nov 1981 08:52:00 GMT  
> Cache-Control: no-store, no-cache, must-revalidate  
> Pragma: no-cache  
> Location: https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&usces_status=none&usces_message=&action=upload_register&mode=all&regfile=UmVnaXN0UHJvZHVjdHNfMTUzMDU3ODQ3Ni5jc3Y=  
X-Original-Date: Tue, 03 Jul 2018 00:41:16 GMT  
X-UA-Device: pc  
 
 
上記のLocationに記載されているURLにブラウザでアクセスしてみたところ商品登録が行われたため、  
以下を追加で実行してみました。  
```ここに言語を入力  
$ curl -X POST -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' --include  
```  
 
(レスポンス)  
> HTTP/1.1 302 Found  
> Server: nginx  
> Date: Tue, 03 Jul 2018 02:00:27 GMT  
> Content-Type: text/html; charset=UTF-8  
> Content-Length: 0  
> Connection: keep-alive  
> Expires: Thu, 19 Nov 1981 08:52:00 GMT  
> Cache-Control: no-store, no-cache, must-revalidate  
> Pragma: no-cache  
> Location: https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&usces_status=error&usces_message=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82  
> X-Original-Date: Tue, 03 Jul 2018 02:00:27 GMT  
> X-UA-Device: pc  
 
レスポンス中のLocation内usces_messageをURLデコードすると  
「ファイルをアップロードできませんでした。」とのことでした。  
前の手順でアップロードしたファイルを参照できていないのでしょうか。  
 
 
cronで自動実行するために、どこを修正すれば良いか、ご教授いただけないでしょうか。  
よろしくお願いいたします。
### 補足情報(FW/ツールのバージョンなど)
WordPress バージョン 4.9.5
welcart バージョン 1.9.10
DLSeller バージョン 2.1.14
Media from FTP バージョン 10.04  
Media from FTP Add On Commandline バージョン 1.08
Media from FTP Add On Commandlineではメディア登録時に
以下のログを出力してくれています。
このログから必要事項を抽出して、商品登録ができないか、と考えております。
(以下、ログより抜粋)
> Count: 1
> ID: 324316
> タイトル: S1802032_images2
> Permalink: https://(ドメイン名)/s1802032_images2
> URL: https://(ドメイン名)/wp-content/uploads/S1802032/S1802032_images2.jpg
> ファイル名: S1802032_images2.jpg
> Date/Time: 2018-5-8 14:10
> ファイルタイプ: jpg(image/jpeg)
> ファイルサイズ: 11 KB
> thumbnail: https://(ドメイン名)/wp-content/uploads/S1802032/S1802032_images2-150x150.jpg
  • PHP

    38120 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    15503 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • cron

    363 questions

    cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

  • cURL

    371 questions

    cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

  • シェルスクリプト

    480 questions

    シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る