9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FORKAdvent Calendar 2020

Day 13

IMPORTFEED関数、GASを使ってお気に入りのサイトから情報収集

Last updated at Posted at 2020-12-12

概要

スプレッドシートのIMPORTFEED関数やGASを使って、フィードURLから簡易的な情報収集ができるということで勉強として少し使ってみました。

IMPORTFEED関数

IMPORTFEED関数は、フィードURLをもちいてWebサイトの情報をスプレッドシートにインポートできる関数です。
Web制作に関する情報を紹介しているサイト「コリス」に対して、使ってみます。

1. フィードURLを探す

データを取得したいWebサイトでフィードURLを探します。
開発者ツールを開き、「feed」や「rss」で単語検索すると、サイト側で設定していればそれらしきものがヒットすると思います。
見つかりました。👉 href="//coliss.com/feed/"

2. スプレッドシートで関数を使う

スプレッドシートでIMPORTFEED関数を下の形式で使います。

=IMPORTFEED(フィードURL, [クエリ], [見出し], [アイテム数])
引数 省略の可否 説明
フィードURL 必須 フィードURLを指定する
クエリ 省略可 取得するデータの内容を指定する
見出し 省略可 先頭行に列見出しを含めるかを指定する
アイテム数 省略可 直近のアイテムから順に、取得する数を指定する

たとえば、
=IMPORTFEED("https://coliss.com/feed/","items title",false,1)
では、このサイトの最新記事タイトルを1件取得して表示させることができます。
引数をかえれば記事の概要、記事URLなども取得することができ、記事の更新とともにスプレッドシートも更新されます。

sheet.PNG

GASを使って

parserと併用すればGASでもフィードURLから情報を取得することができます。
下記ではコリスの最新記事タイトル1件をスプレッドシートに書き出しています。
記事タイトル取得の箇所は用いるparserによってかわってくると思います。

async function mainFunction() {
  // スプレッドシート
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
  const feedUrl = "https://coliss.com/feed/";
  
  // RSSフィード(XML)取得
  const feed = getFeed(feedUrl);
  
  // 記事タイトルを取得
  const information = await getInformation(feed);
  
  writeInformation(information, sheet);

}
  

// RSSフィード(XML)取得
function getFeed(feedUrl) {
  
  const response = UrlFetchApp.fetch(feedUrl);
  xml = response.getContentText(); 
  
  return xml;
}

// rss-parserを用いて最新記事タイトルを取得
async function getInformation(feed) {
  
  // 別ファイルrss-parser.gsを呼び出し、インスタンスを生成
  const parser = new RSSParser();
  const parsedFeed = await parser.parseString(feed);
  const title = parsedFeed.items[0].title;

  return title;
}

// スプレッドシートに書き出し
function writeInformation(information, sheet) {
  
  const sheet1 = sheet.getSheetByName('シート1');
  sheet1.getRange(1, 1).setValue(information);
}


他のツールとの連携を行ったり、トリガーを設定すれば毎日決まった時間に関数を実行させることもできます。
自分好みの仕様にしてオリジナルの情報収集ツールをつくることができそうです。


:christmas_tree: FORK Advent Calendar 2020
:arrow_left: 12日目 ポスト IE 時代に備えて @megurock さん
:arrow_right: 14日目 GCS へのファイルアップロードをトリガーにBigQueryにデータをインポートする。 @shuhei4009 さん

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?