LoginSignup
32
33

More than 5 years have passed since last update.

海外サイトを翻訳してメール通知するシステムがGASとkimonoで超簡単に出来た

Posted at

例えばHackerNewsのような海外のWebサイト。
英語が得意ではない僕は、タイトルだけでも読むのにメッチャ時間がかかる。
なのでそれらのサイトを定期的にスクレイピングして、その中身を翻訳して、メールで送ってくれるシステムを作ってみた。

作るにあたり使ったもの

・GoogleAppsScript
・kimono(http://www.kimonolabs.com/)

kimonoは登録したWebサイトをスクレイピングして、JSONやらCSVやらXMLで返してくれる素晴らしいWebサービス。
import.ioと同じ?

仕組み

1.kimonoでWebサイトをAPI化
2.GASでそのAPIからデータを取得
3.データを翻訳してメール送信して完了

具体的な方法

kimonoでWebサイトをAPI化する方法

まずはkimonoに会員登録してこんなショートカットをブラウザにセット
スクリーンショット 2014-03-27 11.09.08.png

次に対象のサイトにアクセス。
サイトが開いた状態でさっきブラウザに保存したショートカットを押すとこんな状態になる。
スクリーンショット 2014-03-27 11.16.18.png

ここでAPIにしたい部分をクリック(今回はタイトル部分)するとこんな感じになる。
スクリーンショット 2014-03-27 11.16.26.png

ここで注意。
今タイトルっぽいところは全部黄色くなっているが、実は一番上の1つしかAPI対象になっていない。
全部選択したい場合は2行目以降にあるこのチェックマークを押すと全部選択された状態になる。

スクリーンショット 2014-03-27 11.19.24.png

を押すと右側のチェックマークが消えてこんな感じになる

スクリーンショット 2014-03-27 11.15.51.png

他にもAPIには出来るが、今回はこれだけで良かったのでこれで右上のDONEをクリック。
API名とかスクレイピングの頻度を設定して完了。

このAPIはJSON、csv、XML形式でアクセスが可能。
kimonoで作られたアドレスにアクセスしてみると、JSONだとこんなのが返ってくる。
スクリーンショット 2014-03-27 11.28.51.png
素晴らしいですね。
これでkimonoの設定は終わり。

GoogleAppsScriptの設定

GASの基本的な作り方はググってもらえれば良いかと。
今回はコードだけ。

translate.js
function translateAndSendMailer() {
  var jsonText = UrlFetchApp.fetch("kimonoで発行されたAPIのアドレス").getContentText();
  var results = JSON.parse(jsonText);
  var webTitles = results["results"]["collection1"];
  var mailBody = webTitles.map(function (hash, i, self) {
    return convertToText(hash);
  }).join("\n\n");

  MailApp.sendEmail("送りたいメールアドレス", "メールタイトル", mailBody);

  function convertToText(hash){
    var result = 
       LanguageApp.translate(hash["property1"]["text"], "en", "ja") + "\n" +
          hash["property1"]["href"];
    return result;
  }
}

完了。試しに一回送ってみるとこんなメールが届いた。
※kimonoのSSとこのメールのSSは時間が違うため内容の差はご了承ください。
スクリーンショット 2014-03-27 11.39.04.png
これであとはトリガー設定して、好きな頻度で動くようにする。

これだけでAPIにしてくれたり、翻訳してくれたりメール送ったりkimonoとかGASとか便利すぎて鼻血出る。
でも翻訳がイマイチ何を意味してるかわかりにくいのでそもそも論英語の方が良いんじゃないかって説もなくはない。勉強することにする。。。

32
33
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
32
33