<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>スプレッドシート - How to.</title>
	<atom:link href="https://mcoamon.com/posts/tag/%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88/feed/" rel="self" type="application/rss+xml" />
	<link>https://mcoamon.com</link>
	<description>役に立ったり立たなかったり備忘録。</description>
	<lastBuildDate>Thu, 20 Apr 2023 01:40:08 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://mcoamon.com/wp-content/uploads/2022/12/cropped-mcoamon-32x32.png</url>
	<title>スプレッドシート - How to.</title>
	<link>https://mcoamon.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://mcoamon.com/posts/tag/%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88/feed/"/>
<site xmlns="com-wordpress:feed-additions:1">217858255</site>	<item>
		<title>【スプレッドシート】IMPORTXMLを用いて佐川急便の配達状況を確認できる仕様を作る</title>
		<link>https://mcoamon.com/posts/4296/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590%25e3%2582%25b9%25e3%2583%2597%25e3%2583%25ac%25e3%2583%2583%25e3%2583%2589%25e3%2582%25b7%25e3%2583%25bc%25e3%2583%2588%25e3%2580%2591importxml%25e3%2582%2592%25e7%2594%25a8%25e3%2581%2584%25e3%2581%25a6%25e4%25bd%2590%25e5%25b7%259d%25e6%2580%25a5%25e4%25be%25bf%25e3%2581%25ae%25e9%2585%258d%25e9%2581%2594</link>
					<comments>https://mcoamon.com/posts/4296/#respond</comments>
		
		<dc:creator><![CDATA[mcoamon]]></dc:creator>
		<pubDate>Thu, 16 Feb 2023 05:26:09 +0000</pubDate>
				<category><![CDATA[技術系]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://mcoamon.com/?p=4296</guid>

					<description><![CDATA[<p>無料で利用できる実質エクセル的なスプレッドシート。とりあえず利便性が高すぎる。今回はスプレッドシートで佐川急便の配達状況をトラッキングできる仕様を適当に構築する。 目次 はじめに佐川急便のお荷物問い合わせサービススプレッ [&#8230;]</p>
<p>The post <a href="https://mcoamon.com/posts/4296/">【スプレッドシート】IMPORTXMLを用いて佐川急便の配達状況を確認できる仕様を作る</a> first appeared on <a href="https://mcoamon.com">How to.</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>無料で利用できる実質エクセル的なスプレッドシート。とりあえず利便性が高すぎる。<br>今回はスプレッドシートで佐川急便の配達状況をトラッキングできる仕様を適当に構築する。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">佐川急便のお荷物問い合わせサービス</a></li><li><a href="#toc3" tabindex="0">スプレッドシートの下準備</a><ol><li><a href="#toc4" tabindex="0">スプレッドシートの準備</a></li><li><a href="#toc5" tabindex="0">IMPORTXML関数</a></li><li><a href="#toc6" tabindex="0">IMPORTXMLの使い方</a><ol><li><a href="#toc7" tabindex="0">任意のURL</a></li><li><a href="#toc8" tabindex="0">任意のXPath</a></li><li><a href="#toc9" tabindex="0">覚えておいて欲しいこと</a></li></ol></li><li><a href="#toc10" tabindex="0">本題 佐川急便の配達状況XPath</a><ol><li><a href="#toc11" tabindex="0">スプレッドシートをいじる</a></li><li><a href="#toc12" tabindex="0">セルの指定及び文字列を結合させる</a></li></ol></li></ol></li><li><a href="#toc13" tabindex="0">総括</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p><strong><span class="fz-40px">API叩いたりGAS使えば解決だろとか言う</span></strong><span class="fz-40px">😡</span></p>



<p>佐川急便から<a rel="noopener" target="_blank" href="https://www.sagawa-exp.co.jp/service/smart-api/" title="">スマートAPI</a>が提供されているものの、基本はEC事業者向け。利用申請(問い合わせ)も必要で、利用規約を確認した限り料金もかかりそう。GAS(Google Apps Script)は素人だと取っつきにくい。なら簡単な関数を使って個人でそれっぽい仕様を構築しちゃえばいいじゃんってこと。</p>



<p>だがそもそもの話だが、佐川急便に登録しておけば配達予定通知だとか配達完了通知はメールで受け取れるようになっている(発送元/受け取り側いずれも)。</p>



<p>じゃあこんなの作っても特に意味なくねと思われるかもしれないが、<strong>その通り</strong>。<br>特に意味はない。自己満足の領域。強いて理由をあとづけするとすれば、IMPORTXML関数の使い方を調べている方の役に立てばいいな程度。<s><span class="fz-12px">でもこんなのちょっと調べればすぐ出てくるしやはり蛇足か。</span></s></p>



<h2 class="wp-block-heading"><span id="toc2">佐川急便のお荷物問い合わせサービス</span></h2>




<a rel="noopener" target="_blank" href="https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01=" title="佐川急便" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://mcoamon.com/wp-content/uploads/cocoon-resources/blog-card-cache/3db04bb25c03bf5dc5d64ea3dc8e8f61.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">佐川急便</div><div class="blogcard-snippet external-blogcard-snippet">お客様への最適な物流ソリューションを提供する佐川急便のウェブサイトです 。お荷物のお問い合わせ、集荷・再配達受付、飛脚宅配便やTMSなどの各種輸送サービスを紹介しています。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.sagawa-exp.co.jp/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.sagawa-exp.co.jp</div></div></div></div></a>




<p><strong><span class="bold-red">https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01=</span></strong></p>



<p>上記URLの末尾にお問い合わせ番号(=追跡番号=12桁)を入力すると、追跡番号の荷物の配達状況が確認できる。今回はお試しで<strong>123456789012</strong>という架空の追跡番号を入力。</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="744" height="600" src="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_9-59-32_No-00.png" alt="" class="wp-image-4303" srcset="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_9-59-32_No-00.png 744w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_9-59-32_No-00-300x242.png 300w" sizes="(max-width: 744px) 100vw, 744px" /><figcaption class="wp-element-caption"><a rel="noopener" target="_blank" href="https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01=123456789012" title="">https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01=123456789012</a>を表示した結果</figcaption></figure>



<p>するとこのように表示された。<br>当該の追跡番号は架空の番号で、実際に使われていない番号のため出荷日時の表示もなく、最新荷物状況についても当該なしとなっている。</p>



<p>次に、実際に使われている番号を入力してみる。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="744" height="808" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa2.png" alt="" class="wp-image-4305" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa2.png 744w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa2-276x300.png 276w" sizes="auto, (max-width: 744px) 100vw, 744px" /><figcaption class="wp-element-caption">実際に使われている追跡番号を入力した結果</figcaption></figure>



<p>塗りつぶしている箇所が多くて申し訳ないが、塗りつぶし箇所は全て場所や日時、追跡番号が表示されている。<br>また右上の最新荷物状況についても、配達中となっている。この最新荷物状況については状況が更新され次第逐一更新される。そのため、この最新荷物状況をスプレッドシート側で取得すれば配達状況が確認できる。</p>



<h2 class="wp-block-heading"><span id="toc3">スプレッドシートの下準備</span></h2>



<h3 class="wp-block-heading"><span id="toc4">スプレッドシートの準備</span></h3>




<a rel="noopener" target="_blank" href="https://www.google.com/intl/ja_jp/sheets/about/" title="Google スプレッドシート: オンライン スプレッドシートとテンプレート | Google Workspace" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://lh3.googleusercontent.com/WOnvR9nZQBIPPKmiUdj53G6dfLuUpQAkXtnsvYwRDfr5Cn_ZpkACdeZFUMbXt3Wh4z0udpcBRk-7snLoa5xCSemBnMaeOK9B4wAT2A=w1600-rj-e365" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Google スプレッドシート: オンライン スプレッドシートとテンプレート | Google Workspace</div><div class="blogcard-snippet external-blogcard-snippet">Google スプレッドシートでは、オンライン スプレッドシートを作成できます。あらゆるデバイスからリアルタイムで共同編集できます。また、AI を活用してフォーマットや分析データなどを生成できます。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://workspace.google.com/intl/ja/products/sheets/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">workspace.google.com</div></div></div></div></a>




<p>とりあえずGoogleアカウントにログインして、スプレッドシートを準備。どんなシートでもいいが、今回は分かりやすいようにまっさらなシートを用意した。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited.png" alt="" class="wp-image-4309" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>お次に適当な場所へ、適当な内容を入力。<br>今回はB5セルに追跡番号(12桁)と入力し、以下の列には追跡番号を入力していく形式にした。<br><span class="fz-12px">※B7セルが真っ黒ですが、実際に使用された追跡番号を入力しています。黒色塗りつぶしで真っ黒になっているだけです。</span><br>C5セルに最新の配達状況と入力し、以下の列には<strong>左のB列に入力されている追跡番号に応じて配達状況を表示させる</strong>(ここが本題)。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited.png" alt="" class="wp-image-4311" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa6-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><figcaption class="wp-element-caption">B7セルが真っ黒なのは当方の加工によるものです。</figcaption></figure>



<p>そしてとりい出したるは<strong>IMPORTXML関数</strong>。</p>



<h3 class="wp-block-heading"><span id="toc5">IMPORTXML関数</span></h3>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="723" height="645" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa7.png" alt="" class="wp-image-4315" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa7.png 723w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa7-300x268.png 300w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>IMPORTHTML<br>HTML ページ内の表やリストからデータをインポートします。</p>



<p>使用例<br>IMPORTHTML(&#8220;http://en.wikipedia.org/wiki/Demographics_of_India&#8221;,&#8221;table&#8221;,4)<br>IMPORTHTML(A2,B2,C2)</p>



<p>~中略~<br><br><strong>IMPORTXML</strong>: XML、HTML、CSV、TSV、RSS フィード、Atom XML フィードなど、さまざまな種類の構造化データからデータをインポートします。</p>
<cite><a rel="noopener" target="_blank" href="https://support.google.com/docs/answer/3093339?hl=ja" title="">google IMPORTHTMLのサポートページより引用</a></cite></blockquote>



<p><span class="fz-40px"><strong>は？</strong></span></p>



<p>外資系企業特有の全然サポートになっていないサポートページやめろ。分かりづらすぎるぞ。</p>



<p>面倒な説明はガッツリ省略。IMPORTXMLは、表示されているページ上の特定の箇所に存在するデータをインポート(読み込む)という関数。</p>



<p>今回は先程のページの、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="744" height="808" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa2-1.png" alt="" class="wp-image-4324" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa2-1.png 744w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa2-1-276x300.png 276w" sizes="auto, (max-width: 744px) 100vw, 744px" /></figure>



<p>この<span class="bold-red">赤丸部分の文字</span>(最新荷物状況)をスプレッドシートにインポートしてやろうということ。</p>



<h3 class="wp-block-heading"><span id="toc6">IMPORTXMLの使い方</span></h3>



<p><strong>=IMPORTXML(&#8220;任意のURL&#8221;,&#8221;任意のXPath&#8221;)</strong></p>



<p>これでデータの読み込みができる。<br>※カッコ内の<strong>ダブルクォーテーションマーク</strong>→&#8221;&#8221;も必要。全角はダメ。<strong>半角でね。カッコも半角。</strong></p>



<p>いくらなんでもこの説明だと何がなんやらなので、もう少し噛み砕く。</p>



<h4 class="wp-block-heading"><span id="toc7">任意のURL</span></h4>



<p>ここは余談程度なので飛ばしても構わないのだが、この次に説明する<strong>任意のXPath</strong>の項目は一応目を通しておいて欲しい。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="758" height="410" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa9.png" alt="" class="wp-image-4328" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa9.png 758w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa9-300x162.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px" /></figure>



<p>手始めにYahooトップのニュース、上位3つを抽出してみる。</p>



<p>まず抽出したいページのURLはご存知Yahooトップのページなので、<strong><span class="bold-red">https://www.yahoo.co.jp/</span></strong>。この時点で<strong>=IMPORTXML(&#8220;https://www.yahoo.co.jp/&#8221;,</strong>までは埋まった。</p>



<h4 class="wp-block-heading"><span id="toc8">任意のXPath</span></h4>



<p>抽出したいデータのXPathを探すのだが、探し方は本題に戻った時点で詳しく紹介する。<br>ここでは既に特定済みのXPathをスプレッドシートに記入した。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited.png" alt="" class="wp-image-4335" srcset="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>分かりやすくするため、E1セルにYahooトップのURL、G1:G3セルに、Yahooトップニュースの1番目:3番目までのXPathを記入した。</p>



<pre class="wp-block-preformatted">正直不要だとは思われるが、一応各XPathを書いておく。

<strong>//*[@id="tabpanelTopics1"]/div/div[1]/ul/li[1]/article/a/div/div/h1/span
//*[@id="tabpanelTopics1"]/div/div[1]/ul/li[2]/article/a/div/div/h1/span
//*[@id="tabpanelTopics1"]/div/div[1]/ul/li[3]/article/a/div/div/h1/span</strong>

上から順に、Yahooトップのニュースの1番目、2番目、3番めのXPath。</pre>



<p>=IMPORTXML(&#8220;任意のURL&#8221;,&#8221;任意のXPath&#8221;)の型に各種情報を当てはめると、</p>



<pre class="wp-block-code"><code><strong>=IMPORTXML("https://www.yahoo.co.jp/","//*&#91;@id="tabpanelTopics1"]/div/div&#91;1]/ul/li&#91;1]/article/a/div/div/h1/span")</strong></code></pre>



<p>となる。<br><span class="fz-12px">※改行しているように見えるがサイトの仕様上改行しているように見えるだけ。実際は改行していないので注意。</span></p>



<p>これで準備よし。いざ読み込み…!!</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited.png" alt="" class="wp-image-4343" srcset="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-20-57_No-00-1-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p><strong><span class="fz-40px">は？</span></strong></p>



<p>ここで言い忘れていたことがあるのだが、肝となる部分はまだある。<br>先程のXPathをご覧頂くと、<strong>XPath内部にダブルクォーテーション(&#8220;&#8221;)</strong>が使われている。</p>



<pre id="block-fccdd9b1-b46e-49ac-b9a0-a93079e09a42" class="wp-block-preformatted"><strong><strong>//*[@id=<span class="bold-red"><span class="fz-32px">"</span></span>tabpanelTopics1<span class="bold-red"><span class="fz-40px"><span class="fz-20px"><span class="fz-32px">"</span></span></span></span>]/div/div[1]/ul/li[1]/article/a/div/div/h1/sp</strong></strong></pre>



<p>これがIMPORTXML関数のダブルクォーテーションに干渉しているためエラーを吐く。<br>仮にXPath内にダブルクォーテーションが使われている場合は、XPath側のダブルクォーテーションをシングルクォーテーションに変更してやることで解決する。</p>



<pre class="wp-block-code"><code>変更前
<strong><strong>//*&#91;@id=<span class="bold-red"><span class="fz-32px">"</span></span>tabpanelTopics1<span class="bold-red"><span class="fz-40px"><span class="fz-20px"><span class="fz-32px">"</span></span></span></span>]/div/div&#91;1]/ul/li&#91;1]/article/a/div/div/h1/sp</strong></strong>

変更後
<strong><strong>//*&#91;@id=<span class="bold-red"><span class="fz-40px">'</span></span>tabpanelTopics1<span class="bold-red"><span class="fz-40px">'</span></span>]/div/div&#91;1]/ul/li&#91;1]/article/a/div/div/h1/sp</strong></strong>

最終的な表記
<strong>=IMPORTXML("https://www.yahoo.co.jp/","//*&#91;@id=<span class="bold-red">'</span>tabpanelTopics1<span class="bold-red">'</span>]/div/div&#91;1]/ul/li&#91;1]/article/a/div/div/h1/span")</strong></code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited.png" alt="" class="wp-image-4352" srcset="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_12-22-23_No-00-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>するとこのように、トップページ一番上のニュースのデータがテキストで抽出された。<br><span class="fz-12px">(なんか物騒な</span><span class="fz-12px">ニュース</span><span class="fz-12px">だな…)</span></p>



<p>なおいちいちURLを入力するのが面倒な場合は、URLやXPathを別のセルに入力しておき、そのセルを指定してやることでも問題ない。</p>



<p>今度は上から2番目のニュースを読み込みたいとする。<br>E1セルにYahooトップのURLを記入しているため、<strong><span class="fz-20px">=IMPORTXML(E1,</span></strong>となる。そして上から2番目のニュースのXPathはG2セルにあるため、<strong><span class="fz-20px">=IMPORTXML(E1,G2</span></strong>)となる。<br><strong><span class="bold-red">※セルを指定する形式の場合、ダブルクォーテーションは不要。</span></strong></p>



<p>すると</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited.png" alt="" class="wp-image-4362" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa11-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>このように上から2番目のニュースが表示される。<br><span class="fz-12px">(これもまた物騒なニュース…。)</span></p>



<h4 class="wp-block-heading"><span id="toc9">覚えておいて欲しいこと</span></h4>



<p><strong>=IMPORTXML(&#8220;任意のURL&#8221;,&#8221;任意のXPath&#8221;)</strong><br>この形式が基本となるが、上記の形式はURLもXPathも直接入力する場合。先程のように事前にURLが入力されているセルを指定してやる場合は、<strong>ダブルクォーテーションは不要となる。</strong></p>



<p>また直接入力の場合は、<strong>XPath内にダブルクォーテーションが含まれていないか確認すること</strong>。<br><span class="fz-12px">(→含まれている場合はXPath側のダブルクォーテーションをシングルクォーテーションに変更すること)</span><br>その辺りを確認しておかないと、エラー吐いて1時間~2時間くらい苦戦することになるかもしれない。ちなみに筆者は苦戦した経験アリ。</p>



<p>なおサイトによってはこうしたデータを勝手に読み込んでもらう行為(スクレイピング)を禁止しているサイトも存在する。Amazonなども無許可でのスクレイピングは禁止されている。<br>スクレイピング行為は、数件~数十件程度ならまだしも、数万件単位*何千人単位での利用となると、サイト側に膨大な負荷がかかるため、特に意味もなくスクレイピングするのはやめようね。</p>



<p>あとこれは本当に余談であるが、今までIMPORTXMLと記述してきたが、別にimportxml(小文字)でも問題ない。<br>=SuMとかでもSUM関数は動くし、=VlOoKuPとかでもちゃんとVLOOKUP関数は動く。</p>



<h3 class="wp-block-heading"><span id="toc10">本題 佐川急便の配達状況XPath</span></h3>



<p>というわけで、本題に入る。</p>



<p>佐川急便の赤丸の部分のXPathを調べる。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="372" height="404" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa2-2-edited.png" alt="" class="wp-image-4373" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa2-2-edited.png 372w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa2-2-edited-276x300.png 276w" sizes="auto, (max-width: 372px) 100vw, 372px" /></figure>



<p>調べ方は至って簡単で、ページを開いた状態で<span class="bold-red">F12キー</span>を押してデベロッパーツールを開く。<br><span class="fz-12px">※ページ内で右クリックして検証とか調査を押しても開ける。Macとかも同じ感じじゃないのしらんけど。</span></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa12-975x1024.png" alt="" class="wp-image-4377" width="626" height="657" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa12-975x1024.png 975w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa12-286x300.png 286w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa12-768x807.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa12.png 1028w" sizes="auto, (max-width: 626px) 100vw, 626px" /></figure>



<p>すると画面の右側になにやら面倒くさそうなモノが出てくるが、そこまで面倒なことはしない。</p>



<p>デベロッパーツールの左上にあるカーソルみたいなマーク(①)を押したあとに、最新荷物状況の下に表示されている文字(②)を押す。<br><span class="fz-12px">※このケースの場合、②は配達中と表示されている部分を押す。</span></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa13-1024x896.png" alt="" class="wp-image-4379" width="598" height="523" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa13-1024x896.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa13-300x263.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa13-768x672.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa13.png 1234w" sizes="auto, (max-width: 598px) 100vw, 598px" /></figure>



<p>上記の操作が完了したら、デベロッパーツール側では②で選択した要素が横一列、薄いハイライトで強調されていると思う。</p>



<p>そのハイライトの上で、右クリック&gt;コピー&gt;XPathをコピーの順に操作。この操作も終わったら今度はスプレッドシートへ戻る。</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-1024x576.png" alt="" class="wp-image-4380" width="662" height="372" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-1536x864.png 1536w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa5-320x180.png 320w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa5.png 1500w" sizes="auto, (max-width: 662px) 100vw, 662px" /></figure>



<h4 class="wp-block-heading"><span id="toc11">スプレッドシートをいじる</span></h4>



<p>とりあえず、先程コピーしたXPathを適当な場所にペースト(貼り付け)しておくことを推奨。<br>今回はE3セルにペーストしておいた。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited.png" alt="" class="wp-image-4385" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa14-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>まずはURLもXPathも直接入力したケースで進める。<br>URLは<strong>https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01</strong>に<strong>追跡番号(12桁)</strong>を足したモノとなるため、</p>



<p><strong>https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01=123456789012</strong> となる。</p>



<p>次に取得したXPathを確認する。<br>//*[@id=<span class="fz-40px"><span class="bold-red">&#8220;</span></span>list1<span class="fz-40px"><span class="bold-red">&#8220;</span></span>]/div/table/tbody/tr[1]/th[3]/span</p>



<p><span class="bold-red">親方！！XPathにダブルクォーテーションが含まれています！！！</span></p>



<p>XPathにダブルクォーテーションが含まれているため、当該箇所をシングルクォーテーションに書き換える。<br>//*[@id=<span class="bold-red">&#8216;</span>list1<span class="bold-red">&#8216;</span>]/div/table/tbody/tr[1]/th[3]/span</p>



<p>これで準備が完了。最終的には</p>



<pre class="wp-block-code"><code>=IMPORTXML("https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01=123456789012","//*&#91;@id='list1']/div/table/tbody/tr&#91;1]/th&#91;3]/span")</code></pre>



<p>となる。<br>これをC6セルに記述してエンター。すると、</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited.png" alt="" class="wp-image-4393" srcset="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>無事該当なしと表示された。今回は存在しない追跡番号を入力したため該当なしと表示されている。<br>次は実際に存在する追跡番号で応用してみる。</p>



<h4 class="wp-block-heading"><span id="toc12">セルの指定及び文字列を結合させる</span></h4>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited.png" alt="" class="wp-image-4393" srcset="https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/SnapCrab_NoName_2023-2-16_13-32-41_No-00-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>E2セルに<strong>追跡番号より<span class="bold-red">手前のURL</span></strong>、E3セルにXPathを入力しておいた。<br>先程の項目でも説明した通り、セルを指定する形式の場合、ダブルクォーテーションは不要となる。</p>



<p>とはいえ、いちいち追跡番号を入力したURLを準備するのは面倒。というわけで、今回はB列に記入されている追跡番号とE2に記入されているURLを<strong>結合</strong>させる。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="853" height="480" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa15-edited-1.png" alt="" class="wp-image-4406" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa15-edited-1.png 853w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa15-edited-1-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa15-edited-1-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa15-edited-1-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa15-edited-1-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa15-edited-1-320x180.png 320w" sizes="auto, (max-width: 853px) 100vw, 853px" /></figure>



<p>やり方は非常にシンプル。上記セルの場合、<strong><span class="bold-red">=IMPORTXML(E2&amp;B7,E3)</span></strong>と入力するだけ。<br><span class="fz-12px">今回はB7に入力されている追跡番号の配達状況を知りたいため、C7に上記の内容を記入する。</span></p>



<p>E2セルにはURL、B7には追跡番号が入力されている。<br>E2(https://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?oku01=)とB7(追跡番号)を結合させて一つの文字列にしてしまおうってことで、E2とB7の間に<span class="fz-32px"><strong>&amp;</strong></span>という記号を挟んでいる。こうすることで、追跡番号をB列に入力するだけで勝手にデータを抽出してくれる。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" src="https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited.png" alt="" class="wp-image-4415" srcset="https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited.png 1280w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited-300x169.png 300w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited-1024x576.png 1024w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited-768x432.png 768w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited-120x68.png 120w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited-160x90.png 160w, https://mcoamon.com/wp-content/uploads/2023/02/sagawa16-edited-320x180.png 320w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></figure>



<p>するとこのように、C7 最新の配達状況が更新され、配達完了となった。</p>



<p>なおC7に<strong><span class="bold">=IMPORTXML(E2&amp;B7,E3)</span></strong>と入力したままオートフィル(カーソル右下の四角をグイッと下の方にやったりするアレ)をすると盛大にエラーを吐く。</p>



<p>上記シートの状態でC7より下も同じように追跡番号の最新の配達状況を知りたい場合は、<br>=IMPORTXML(<span class="bold-red">$</span>E<span class="bold-red">$</span>2&amp;B7,<span class="bold-red">$</span>E<span class="bold-red">$</span>3)と、E2とE3を絶対参照にしてから記述してからオートフィルをするとよい。</p>



<h2 class="wp-block-heading"><span id="toc13">総括</span></h2>



<p><strong><span class="fz-44px">意外と簡単。</span></strong>※ただし難アリ。</p>



<p>長々と記述したが、実際に操作すれば初めてでも5分~10分程度で終わると思われる。ただしこのIMPORTXMLはやや癖があることを忘れてはならない。</p>



<p>まずIMPORTXML関数は、いつでも<span class="bold-red">リアルタイム更新というわけではない</span>。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>データの更新頻度<br>使用量が適切に維持されている間はユーザーが最新のデータを取得できるようにするために、IMPORTDATA、IMPORTHTML、IMPORTXML では複数のルールを共有しています。</p>



<p>ユーザーがドキュメントを開いている間、この 3 つの関数は <strong>1 時間ごとに自動的に更新を確認します。</strong>数式とシートが変更されていない場合でも、確認します。<br>ユーザーがセルを削除してもう一度追加した場合や、同じ数式でセルを上書きした場合、これらの関数は更新をトリガーします。</p>
<cite>https://support.google.com/docs/answer/12188454?hl=ja</cite></blockquote>



<p>更新は基本的に1時間ごと。またシートを開いている間に限る。セルを消したり上書きした場合はこの限りではない。<br>(つまるところシートを開いていない間は恐らく更新されず、次回開いたときに更新される)。</p>



<p>GASを用いて強制的に更新するのでれば別だが、初めての人には敷居が高い。<br>(でも調べりゃそんな感じのことしてる人たくさん出てくるはず)</p>



<p>またIMPORTXML関数を多用すると、<strong>スプレッドシートが非常に重くなりがち</strong>。<br>1つや2つ程度なら問題ないのだが、50とか100とか使い始めると相当重くなる。まあ外部サイトにアクセスしてデータ拾ってきて書き出してなんて操作を勝手にやってくれるんだから、そりゃ重くなるわな。<br>結局のところGAS使えよって話なのだが、やはり敷居は高め。慣れないうちはできる範囲のことに全力を尽くしておけば良し。大体のことは力技でどうにかなっちゃうんだから。</p><p>The post <a href="https://mcoamon.com/posts/4296/">【スプレッドシート】IMPORTXMLを用いて佐川急便の配達状況を確認できる仕様を作る</a> first appeared on <a href="https://mcoamon.com">How to.</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mcoamon.com/posts/4296/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4296</post-id>	</item>
	</channel>
</rss>
