URL一覧からタイトルを一括DLするGoogle Apps Script

アップすスクリプト

ある程度の数のリストをごにょごにょするときには、Googleスプレッドシートはとても便利です。正規表現が使えたり、AppsScriptが使えたりと、EXCELよりも軽快に処理が行えます。

こんにちは、カグア!です。EXCELほど大量にはデータを扱えませんけれど、Googleスプレッドシートはほんと便利ですよね。

ちょっとURLを大量に処理することがあったので、ソースを共有しますー。

追記:13時43分 UrlFetchApp.fetchで文字化けする問題について追記しました。

何をするスクリプトなの?

とりあえず、URL一覧があって、それを1個1個どんなWebページなのかって知りたいときありますよね。

これを・・・、
これを

こうしてくれるAppsスクリプトです。
こうしてくれます

タイトルアグリゲーター

ほぼこちらのソースをお借りしています。感謝です。ありがとうございます。

>>Google Apps Scriptでスクレイピングする方法 – Qiita

あとは、タイトルの文字を置換するとか、クレンジングするとかいろいろとリプレースすると良いかと思います。ただ、エラー対応や例外処理とかぜんぜんしてません。ごめんなさい。

function myFunction() {
  var KKsp = SpreadKKactveetApp.getActiveSpreadKKactveet();
 var KKactv = KKsp.getActiveSheet();
  var KKcell = KKactv.getActiveCell();
  var y = 0;
  var KKval = KKcell.offset(0, -1).getValue();
  while(KKcell.offset( y , -1 ).getValue() != ""){
    var response = UrlFetchApp.fetch(KKval);
    var KKReg = /<title>([sS]*?)</title>/i;
    var match = KKReg.exec(response.getContentText());
    var title = match[1];
    title = title.replace(/(^s+)|(s+$)/g, "");
    KKcell.offset( y , 0 ).setValue(title);
    y++;
    KKval = KKcell.offset(y, -1).getValue();
  }
}

Appsスクリプトの解説

AppsScriptは、基本的にはJavaScriptと似たような構造です。オブジェクトを生成して、それらにどんどんメソッドやプロパティ操作していけばOKです。

Google Apps Script は、お約束の構文と、offset()の使い方を覚えると、すぐに書けるようになりますよ。ほんと便利。

.offset( y , x )

カレントセルの上下yxに対して処理ができる。xyではないので注意。

.getValue()と.setValue()

値をセットしたり取得したりします。

お約束

var app = SpreadKKactveetApp.getActiveSpreadKKactveet();
var sheet = app.getActiveSheet();
var cell = sheet.getActiveCell();
上から、アクティブなファイルからアクティブなシートを生成し、アクティブなセルを読み込む、という流れ。

UrlFetchApp.fetch();

URLを指定すればその先のデータを持ってこれます。実行時には一回認証する必要があります。

追記:Amazonのようにunicodeじゃないとき

UrlFetchApp.fetchは便利なのですが、たまに文字化けすることがあります。黒いダイヤに白抜きの???とかになるケース。アマゾンで遭遇しました。

charsetをUTF-8にしても、Shift-JISにしてもダメでした。で、調べますと以下のページが。どうやらそもそもUTF-8などのunicode(ユニコード)で出力してくれてなかったみたい。

>>レビューコンテスト | ベジタリアンのお買いもの – 楽天ブログ

結論としては、UrlFetchApp.fetchするときに、unicode変換するスクリプトを別途書かないとイケナイっぽいです。Google Apps Script ではunicode変換のメソッドや関数がないため、PHPなど何かしら自作する必要がありそうです。

Google Apps Scriptビギナーズガイド: Googleをプログラミングせよ! PRIMERシリーズ (libroブックス) 電子書籍: 掌田津耶乃: Kindleストア
Google Apps Scriptビギナーズガイド: Googleをプログラミングせよ! PRIMERシリーズ (libroブックス) 電子書籍: 掌田津耶乃: Kindleストア

・ ・ ・ ・ ・

>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る

↓↓↓無料のニュースレターを配信中です

正規表現も使えるのが嬉しい。