Google Apps Scriptでwebデータ取得

スプレッドシートにWebデータを記述する方法として

現在の利用

を使っています。簡単で、便利なのですが、以下の問題がありました。

問題

  • 必要なデータを取得できない場合がある。
    記述方法をいろいろと試してみましたが、取得できませんでした。
  • 必要なデータ以外が取得される。例:500円 円は不要です。
  • タイミングにより、取得時にエラーが発生する時がある。

問題解決の方法を検討しています。

Google Apps Scriptでwebデータ取得 検討

【難しくない】GASでwebスクレイピングして正規表現でデータを集める

を見て実行してみました。

感想

  • Webデータの取得は、思った以上に簡単
  • Webデータから、必要なデータの取り出しが結構大変。
    HTMLファイルを確認して、指定する必要がある。

サンプル

function Get_yahoo() {
     var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
     var getUrl = "https://www.yahoo.co.jp/";
     var content = UrlFetchApp.fetch(getUrl).getContentText('UTF-8');

     上記で、https://www.yahoo.co.jp/のページデータを取得

 以下で、A1にページデータを記述

   sheet.getRange("A1").setValue(content);

 

  以下で、ページデータの <title>で囲まれた部分の文字を取得し、B2セルに記述

   例)  <title> ここの文字    </title>

  var titleRegexp = new RegExp(/<title>.*?<\/title>/);
  var title = content.match(titleRegexp);
  var titles = [];

  for (var i = 0; i < title.length; i++) {
    var titleName = title[i]
    .replace(/<title>/,'')
    .replace(/<\/title>/,'')
    titles.push([titleName]);
  }
  sheet.getRange("B2").setValue(titles); //セルに値を記述する
}