第60話 IMPORT関数について

「デッテレレレレーレ、デッテレレレレーレ、サムシンストレンジ〜、インザフンフンフーン、フードゥーユコール?」


「「ご、ゴーストバスターズ…!」」


 ノリノリのサイトウにコール・アンド・レスポンスを求められておれとイノウエは困っていた。もっともこの状況で映画好きのサイトウがはしゃぐのも無理はない。


 おれたち3人は背中に背負った機械とそこからケーブルで繋がる銃のようなものを持たされている。サイトウいわくだ。


 そしてシートにはいわゆる飛び交っていた。緑色のブヨブヨのデブ。目を黄色く光らせたボロボロの服を着たユーレイ。ゴーストのくせに足があって全速力で走り続ける半透明のランナー。様々な姿のゴーストがいる。こいつらは見た目は様々だがすべてIMPORTXMLらしい。



 ##########################


「今日のクエストではWEB関数をやるぞ」


 DPRODUCTにやられて入院してからの復帰初日の車中のこと。


「IMAGE関数はおぼえてるよな?」


「はい、URLから画像をとってきて表示するやつですよね」


「今日相手にするのはURLを引数にしてWEB上の情報を取ってくる関数ってこった。イノウエ、あとは説明たのんだ」


「サイトウさん、なんか最近説明わたしに投げすぎてません?」


「いいじゃねえか、この分野じゃおめえのほうが詳しいだろ」


 おだてられてまんざらでもなかったのか、イノウエは機嫌よく解説をはじめた。


「そうですね、わかりやすいやつから説明していきます」


 イノウエは例のごとくホワイトボードに構文を書いていく。


=IMPORTRANGE(スプレッドシートキー, 範囲の文字列)


「スプレッドシートキー、ってことはIMPORTRANGEは他のシートからのデータの取り込みですか?」


「そうそう。自分のシートでも赤の他人のシートでも、閲覧権限さえあればデータの取り込みが可能です。便利だし使い方もわかりやすいのでエンジニアのシート以外でもいろんなところでみかけますね。会社でGoogleAppsを使っていたりすると、誰かがデータを纏めたシートを他の社員が参照するのに使われたりしています」


「Excelでもファイルをまたいだ参照することありましたけど、あれって置いてあるフォルダやファイル名変わると困るので不便じゃないですか?」


「Excelはそうですけど、わたしたちGoogleSpreadsheetsで一度つくられたファイルのURLはフォルダやファイル名、オーナーが変わっても維持されますからね。そういうことは起きにくいんです」


 なるほど、便利そうだ。おれが生きていたころも会社でGoogleAppsを導入できたらこれでいくらか楽ができたに違いない。イノウエが説明を続ける。


=IMPORTDATA(URL)


「IMPORTDATAはふわっとした名前ですが機能は具体的で、WEB上のCSVかTSVのデータを取り込む関数です。CSVとTSVはわかりますよね?」


「それぞれCommaカンマ-Separated区切りの ValuesデータTabタブ-Separated区切りの Valuesデータですよね。よくいろんなシステムからダウンロードしてExcelに貼り付けてました」


「タカハシさんの前職だったらそうですよね。IMPORTDATAは、CSVやTSVがWEB上にあればダウンロードして貼り付けをしなくてもそのままシートに取り込める関数です」


「そんなCSVありますか?ぼくの業界だとログインしてダウンロードしないといけなかったので、あんまり使えるイメージがないですね」


「よく見かけるのは政府統計とかですかねー。ただあんまり綺麗に整っていないCSVが多いからかこの関数をみかけることは多くはないです」


 なるほど、たしかに政府統計のCSVが使いにくいみたいなネットの話題なら見た覚えがある。


「さて、それ以外のIMPORTはちょっとわかりにくいかもしれません」


 イノウエは他の関数の構文を書いていく。


=IMPORTHTML(URL, クエリ, 指数)


「クエリ?またSQLですか?」


「いえ、IMPORT関数でのクエリは取り出す情報の種類指定で選択肢も少ないです。IMPORTHTMLであれば"table"か"list"しかないので簡単ですね」


 イノウエがなにかちまちまと具体的なURLを含んだ例を書きはじめた。


=IMPORTHTML("https://kakuyomu.jp/works/1177354054887646455", "list", 7)


「これは稿から話のタイトルの一覧を取り出す例ですね。<li>タグで囲まれているデータであればlistで取り出せます。7はそのページのhmtlで7番目のリスト要素ってことです。ちなみに上のように書くとこの作品の現時点60話までのタイトル一覧を取り込むことができます」


稿ってなんですか」


「次にIMPORTXMLですね」


 え?なんで無視されたの?


=IMPORTXML(URL, XPath クエリ)


「XMLと名前にはついていますが、実際のところよくある用途はHTML、普通のWEBページの特定の要素を取り出すときです」


=IMPORTXML("https://kakuyomu.jp/works/1177354054887646455", "//*[@id='workPoints']/a/span")


「さっきの小説の例ですが、こう書くとレビューの★の数が数値として取得できます。現時点で★125、もっとたくさん★つくといいんですけどねー」


「だからなんなんですかその小説は!?」


「ちなみにXPathはブラウザの開発者ツールなんかで簡単に抽出できます。ただダブルクオーテーションが入っていると関数の文字列の囲いと干渉してしまうのでシングルクォーテーションに書き換えてやるか、もしくは別のセルに書き込んで参照すると良いですね」


 なぜ無視されるのか。なにか聞いてはいけないことを聞いたのだろうか。


「IMPORTXMLはいわゆるWEBのクロールになにかと重宝する関数で、複数のページから同じ要素を取り出してシートで比較する用途で使ったりもできますね。複数の小説の★の数をシートに並べて比べるとか。なのでほかのWEB関数に比べて集団で出現することが多いです」


 説明はわかったのだが、釈然としない。なんだっていうんだ。イノウエはとにかくおれを無視して説明を続ける。


 =IMPORTFEED(URL, [クエリ], [見出し], [アイテム数])


「最後にIMPORTFEEDですね。これはRSSやAtom、ブログやニュースサイトのコンテンツのフォーマットを読み込むためのものです。タカハシさんはRSSリーダーとか使ってましたか?」


「んー、大学ぐらいの時は使ってましたね。いつからかニュースアプリやTwitterを使うようになって使わなくなっちゃいましたけど」


「使ったことがあれば大丈夫ですね。あのRSSのことです」


 =IMPORTFEED("https://kakuyomu.jp/info/feed","items",TRUE, 5)


「これは稿のお知らせを取得する例なんですが」


 またかよ。


「2つめの引数のクエリはデフォルトもitemsで他にfeedも選べるのですが、これはフィード自体の素朴な情報を得るだけなのでほとんどitemsだけが使われますね。そのあとの引数は見出しの表示・非表示、それからフィードの中で何本の記事を表示するかの個数指定ですね。以上です。わかりましたか?」


 関数の説明はわかったが、おれは返事をする気が起きなかった。そうしてついた先にいたのがゴーストたちだった。



※今回の関数

IMPORTFEED https://support.google.com/docs/answer/3093337

IMPORTHTML https://support.google.com/docs/answer/3093339

IMPORTDATA https://support.google.com/docs/answer/3093335

IMPORTXML https://support.google.com/docs/answer/3093342

IMPORTRANGE https://support.google.com/docs/answer/3093340

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る