Googleスプレッドシート:IMPORTXML関数で商品の発送状況を一括確認(2)
当ラボでは、誰もが無料で使うことができるGoogleスプレッドシートを使って様々なサイトから必要な情報の取得を仕組み化したツールを提供しています。
連載で、EMSやe-パケットなど追跡番号付きで発送した商品の配達状況をチェックする「発送状況一括チェックツール」を作成しています。前回は、ツールの全体像とxPathの記載について紹介しました。
今回は、xPathを修正して必要なデータを取得し、完成させます。
完成イメージ
追跡番号一覧にデータを入力すれば、最新の追跡状況がわかるという簡単なものです。プログラム(スクリプト)なしで作成可能です。
xPathの修正(1)最後の要素を取得したい
前回作成したxPathはこちら。
//*[@id=”content”]/form/div/table[2]/tr[17]/td[2]
こちらを使えば、「配送履歴」の一部を取得することができます。しかし、欲しいデータは「最新」の「配送履歴」です。
上のxPathを見るとWebページでテーブルを作成するときに使用する
・Table
・tr
・td
のタグがあります。このタグのヨコの[]内の数字を変更すれば、欲しいデータが取得できそうです。
そこで、Googleで「xPath 最後の要素」と検索するとヒントがありました。最後の要素を取得するには「last()」を使えば良さそうです。
ということで、下記のように入力してみました。
//*[@id=”content”]/form/div/table[2]/tr[last()]/td[2]
・
・
・
上手くいかない。
・
・
・
//*[@id=”content”]/form/div/table[2]/tr[last()-1]/td[2]
と入力したらOKでした。
xPathの修正(2)更新日の取得
(1)で作成したデータは「配送履歴」でした。もう一つ、更新日(状態発生日)が欲しいので、さらにxPathをちょっと修正しました。
//*[@id=”content”]/form/div/table[2]/tr[last()-1]/td[1]
これで、最新の更新日を取得するためのxPathができました。
シートの作成
作成したxPathを使ってIMPORTXML関数を使うことができるようにします。
B列:追跡番号(手入力)
追跡番号を手入力します。
C列:追跡URL(数式)
B2セルに追跡番号を入力してから、C2セルに次の数式を入力します。
=if(B2<>“”,”https://trackings.post.japanpost.jp/services/srv/search/direct?searchKind=S004&locale=ja&reqCodeNo1=” & B2 & “&x=28&y=11″,””)
ここで、IF文を使っているのは、B2セルにデータが入っていない場合には、何も表示させないためです。
リンクをクリックして正しく作成できていることを確認して下さい。
D列:更新日(数式)
D2セルに今回作成した更新日を取得するためのxPathを使ったIMPORTXML関数の式を入力します。
=if(C2<>“”, importxml(C2,”//*[@id=””content””]/form/div/table[2]/tr[last()-1]/td[1]”),””)
ここで、IF文を使っているのは、C2セルにデータが入っていない場合には、何も表示させないためです。(E列も同じ)
E列:状況(数式)
E2セルに今回作成した状況を取得するためのxPathを使ったIMPORTXML関数の式を入力します。
=if(C2<>“”, importxml(C2,”//*[@id=””content””]/form/div/table[2]/tr[last()-1]/td[2]”),””)
上記3つの式を入力したら、C2-E2セルをコピーして、C2-E11セルにコピーすれば完成です。
まとめ
Googleスプレッドシート独自のIMPORTXML関数を使って「発送状況一括チェックツール」を作りました。
プログラム(スクリプト)を使わなくても、Googleスプレッドシート独自の関数を使うことで、発送状況を一括で確認できるようになります。
更に、スクリプトを使ってFile Exchangeの販売実績データなどと組み合わせれば、より効率的に発送状況の確認ができます。
いろいろお試し下さい。