ITblog

Yahooショップの在庫なし商品を一括で非表示にする方法

2017年07月01日

Yahooショップの在庫なし商品を一括で非表示にする方法についてです。

Yahooショップは、ユーザ側在庫がない商品を商品一覧でチェックを入れることで非表示にすることができるのですが、チェックを入れない場合在庫なし商品でもずっと商品一覧に表示されたままになってしまうので、あまり見栄えが良い状態にはなりません。

また、その状態で管理画面から一括で商品を非表示にすることができないので、基本的には一つ一つ商品を非表示にしていくしかない、数が多い場合は対応が大変になります。

そこで、CSVを使うことで一括で非表示にする方法について調べてみました。

1.在庫なし商品一覧をダウンロードする

ストアエディタの「在庫管理」から、左下のほうにある「在庫切れの商品データ」の「ダウンロード」でデータをダウンロードします。
在庫なし商品のcsvファイルがダウンロードできます。
また、もう1つの在庫がある商品も含めての商品データのダウンロード(在庫の商品データのダウンロード)も合わせて行います。

2.商品データをダウンロードする

ストアエディタの「商品管理」から、左下の商品データの「ダウンロード」で商品データをダウンロードします。
このときに、事前に上にある「CSVダウンロード項目の選択」で、必要なもの以外のチェックを外します。
必須項目以外は全てチェックを外して下のほうにある「display/ページ公開」にチェックを入れて保存します。
CSVダウンロードには時間がかかる場合があるので、その場合は一度ダウンロードをして、少し時間が立ってからもう一度実行するとダウンロードできます。

3.CSVファイルを1つのエクセルシートに開く

ダウンロードした3つCSVファイル(全在庫商品データ、在庫切れ商品データ、全商品データ)をエクセルファイルで3つのシートにそれぞれ開きます。
この場合、普通にエクセルファイルを開くと先頭の0が消えたりとおかしくなるので、データインポートを行います。
エクセルの「データ」→「外部データの取り込み」→「テキストファイルのインポート」からインポートします。
データのファイル形式:区切り記号付き、元のファイルで適切なのを選んで「次へ」→区切り文字が「コンマ」のみにチェックで「次へ」→列のデータ形式「文字列」で、データのプレビューで全選択(一番右までスクロールしてシフト+クリック)で「完了」→既存のワークシートで「OK」

なお、エクセルがない場合はGoogleスプレッドシートでもできると思いますが、ここではエクセルで調べていますので、おそらく同様のことはスプレッドシートでもできると思います。

4.CSVファイルの編集

CSVファイルの中で、商品データが入ったシートを編集します。

まずは、「全商品の在庫」が入っているシートを編集します。
ここで、「quantity」の列をフィルタで「0」、「」(空)のセルのみをフィルタして、フィルタされた行を全て削除します。
これで、全商品の在庫のシートでなく、在庫がある商品のみのシートになります。

次に、全商品のシートを編集します。
は、「display」の列の右の列に、次の数式を入れます。

=IF(COUNTIF(在庫なし商品シート!$A$2:$A$縦最後のセル,B2),0,1)

これがどういう式かというと、商品コードを比較して、在庫なしシートに商品コードが存在した商品の場合は0にして、存在しなかった場合は1にしています。
つまり、在庫なし商品に商品があった=0、なかった=1で値が入ります。
この数式を一番下までコピーします。
(一番下までコピーするのは数式セルを選択して、右下の小さい四角をダブルクリック)

次に、さらにその右側の列に次の数式を入れます。

=IF(COUNTIF(全在庫シート!$A$2:$A$一番下のセル,B2),1,0)

これはどういう式かというと、在庫のある商品の場合は1を表示し、それ以外は0を表示しています。
この数式を一番下までコピーします。

最後に、その右の列に次の数式を入れます。

=IF(E3=0,0,IF(G3=1,1,IF(F3=0,0,1)))

これがどういう式かというと、もともと0の場合は0(もともと非表示の商品は非表示のまま)で、
そうでない場合(1で表示商品の場合)で、在庫がある場合も1で(在庫がある商品場合は1のまま)
そうでない場合で、在庫がない商品の場合は0にしています。
この数式を一番下までコピーします。

こうすることで、もともと0:非表示、1:表示

なのですが、現在表示になっている商品で、在庫なしの非表示にしたい商品は0になります。
何故こんな複雑な方法をとっているかというと、同じ商品コードでも複数の商品がある場合があり、ある商品コードが在庫が0でも、同じ商品コードで在庫がある場合があり、その場合は表示にする必要があるからです。
これで、もともと表示している商品の中から、本当に在庫がない商品は0になります。

5.CSVファイルの作成

上記のシートが完成したら、まずCSVを編集する専用のソフトで、最初にダウンロードして、もともとの全商品のデータファイルを開きます。
そして、displayの列を、4の手順で最後に作成した列で置き換えます。
その後、CSVを保存します。
このときに項目ごとの引用符などは最初にダウンロードした状態の設定と合わせて保存します。
何故CSVを編集できるソフトで保存するかというと、エクセルがCSVを作成する専用のソフトではなくデータが変更されていると困るからです・・・。

6.CSVファイルのアップロード

最後にCSVファイルのアップロードを行います。
アップロードはYahooストアエディタの「商品管理」から行います。

アップロードする前に「バックアップ」で全データのバックアップを念のためとっておきます。(これも商品数によっては時間がかかります)
また、今回更新するデータは商品データなので「商品データ」→「ダウンロード」でもバックアップをとっておくとよいです。
バックアップをすることで、もしアップロードでデータの更新に失敗した場合でもあとで巻き戻せます。

「商品データ」→「アップロード」から「項目指定」にチェックを入れ、「ファイルを選択」で、5の手順で編集したCSVファイルを選択し、アップロードします。

アップロードが完了したら「反映管理」からサイト全体に反映を行います。
反映には15分ほど時間がかかるので、サイトを確認して正しく更新ができていれば作業完了で、万が一失敗した場合にはバックアップからデータを巻き戻すことも可能です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です