こんにちは
技術的な情報を発信をしないエンジニア、かしおです
そろそろちゃんとした内容を書かないとな、と危機感を覚えている今日この頃・・
ということで今回は、
スプレッドシートの関数「IMPORTXML」でページ情報を取得できない事象について
お話していきたいと思います!
この記事は「IMPORTXML」関数を使っていて、
- ちゃんと使い方あってるのか不安
- なんかちゃんと取得できないタイミングがあるんだよね・・
- 取得するの遅いなぁ
なんて思ってる方に向けた記事になっております
そもそも IMPORTXML って?
- スプレッドシートで使用できる関数の一つ
- 「特定のページ」の「特定の情報」を取得する
あるウェブサイトのページのある部分の単語や数字を取得したい場合に使用します
例えば、ある株の銘柄の情報を提供しているページの「株価」や「利回り」とかですね
ニュースサイトのトップニュースとかも取得できます
IMPORTXMLの使い方
スプレッドシートのセルに
=IMPORTXML(“<URL>”,”<XPath>”)
という風に URL と XPath を入れます
するとそのセルに取得した内容が表示されます
こちらの記事にも詳しい使い方を載せているので参考にしてみてください
なんか取得できないんだけど?
便利な IMPORTXML 関数なんですが、なぜか取得できないことがあったりします
いくつか原因が考えられるので、困っている方は下記を確認してみましょう
使い方あってる?
基本的なところで躓いている人もいるようです
例えば、
- 関数(IMPORTXML)の前に ‘=’ を入れ忘れている
- ‘IMPORTXML’ の綴りが違う
- URL や XPath を “” で囲っていない(文字列として指定します)
などですね
自信がない場合はもう一度チェックしましょう
URL や XPath はあってる?
こちらも基本的なところですが、手打ち入力した場合はありえます
URL や XPath はなるべくコピペでいきましょう
XPath をコピペで取得する方法は少し込み入っているので、詳しくはこちらの記事を参考にしてください
使いすぎてない?
実は今回で一番言及しておきたかったところです
IMPORTXML はページが更新されたりするタイミングで情報を取得します
情報を取得する時、実はブラウザでページを開くのと同じ通信処理を行っています(厳密には違いますが)
なので同じシート内で複数箇所 IMPORTXML を使用している場合、
一気に複数のページを開くことと同様のことが起こります
そのため
- 取得に時間がかかり、
- 表示が遅くなったり、
- タイムアウトを起こして結果的に取得できない
ことが起こります
これは IMPORTXML の仕様になるので簡単な回避方法はなく、
IMPORTXML の同時使用頻度を抑えるということ以外に改善策はありません
まとめ
IMPORTXML は簡単に使える便利な関数ですが、弱点もあります
仕様に沿った、適した使い方をしましょう
こちらの記事では IMPORTXML ではなく、GAS による XPath 取得を行っています
難易度は上がります
ですが、パフォーマンスが劇的に改善するので、興味ある方は覗いてみてください
GAS を勉強したい方、GAS で作業の効率化を計りたい方は↓の書籍がオススメです
また Amazon で商品をよく購入する方は Amazon Prime への加入をオススメします
自分は商品がすぐ届くので重宝しております
こちらから登録することで、通常よりお得になりますのでよかったらどうぞ!
コメント