2011年9月8日木曜日

Twitterの検索結果をGoogle Docsのスプレッドシートに取り込む

Twitterでは、Web画面の検索ボックスからツイートの検索が簡単にできますが、結果をより詳しく分析したり、保存しておきたい時などがあります(よね?)。
もちろん、検索結果をコピペしたり、別のサービスをつかったりすることで可能ですが、Google Appsを使っている方であれば、非常に簡単に、ツイートをスプレッドシートに取り込むことができます。
手法としては、Excelのマクロのような「Google Apps Script」を利用します。
なんだか難しそうだなぁと思いました?いやいや、全然簡単です。

まずはGoogle Apps のドキュメントから、新しいスプレッドシートを作成してください。
シートが開いたら、上部にあるスプレッドシートの名前欄に名前を入力しましょう。
名前は何でも良いのですが、今回は「Twitter検索」ということにします。
「OK」を押して名前を付けたら、いよいよGoogle Apps Scriptを作成します。
「ツール」メニューの中から「スクリプトエディタ...」を選択します。
新しくスクリプトエディタのウィンドウが開きます。
右側のコードという場所に、デフォルトでfunction myFunction()と書かれていると思います。
今回は、このmyFunctionという関数の中に、Twitterの検索APIを記述していきます。
とはいえ、以下のコードをコピペしてもらえばOKです。
  var query = Browser.inputBox("検索ワードを入力してください");
  query = encodeURIComponent(query);
  if (query != "") {
    var response = UrlFetchApp.fetch(
      "http://search.twitter.com/search.json?q="+query+"&rpp=100");
    var jsonString = response.getContentText();
    var object = Utilities.jsonParse(jsonString);
    var ss = SpreadsheetApp.getActiveSheet();
    var cell = ss.getRange("A1");
    var row = 0;
    for (var i=0; i < object.results.length; i++) {
      var result = object.results[i];
      var col = 0;
      var dd = new Date(result.created_at);
      cell.offset(row, col++).setValue(dd.toLocaleString());
      cell.offset(row, col++).setValue(result.from_user);
      cell.offset(row, col++).setValue(result.text);
      row++;
    }
  }

コードの中身の説明は今回はしませんが、簡単にいえば、検索したい語句を入力してもらって、それをキーにTwitterの検索APIを呼び出し、結果(今回はmax100件)をシートに貼り付けるというものです。
コピペが完了すると、だいたいこんな感じになります。
クリックすると拡大
画面が小さくて分かりづらいかも知れませんが、コピペをする位置は、function myFunction(){の次の行からです。
では保存します。「ファイル」メニューから「保存」を選択するか、フロッピーディスクのアイコンを押します。

新規保存の場合は、名前をつける必要があります。プロジェクト名は、「twitterSearch」としておきましょう。
「OK」ボタンを押せば完成です!
ほらね、超簡単でしょ?

後は実行してみるだけです。
「Run」メニューから「myFunction」を選択します。
この時、スクリプトエディタが画面の中央に表示されていると、入力ダイアログボックスが隠れてしまうので、スクリプトエディタのウィンドウは最小化しておくと良いです。
このようなダイアログが表示されるので、検索したい語句を入力して「OK」ボタンを押してみましょう。
しばらくすると、シートに検索結果が(あればですがw)表示されます。

今回は、本当に基本的な機能だけに絞っていますが、Google Apps Scriptを使えば、このように外部のWebサービスからデータを取得することが簡単にできます。
また、スクリプトをタイマーで自動起動するようなことも可能ですし、その結果をGoogle Siteのページとして作成したり、メールで送信することもできます。

もしGoogle Apps Scriptなどを使って、こんなことがしてみたいといったご要望があれば、ぜひお気軽にお声がけください。

2011年9月5日月曜日

eFaxを使ってFAXをクラウド化してみました

eFaxというサービスを使って、会社のFAXをクラウド化し、ペーパーレス化を実現したので、その方法をご紹介します。

eFaxというサービスは、月額1,500円(現在は995円/月)で利用できるインターネットFAXサービスです(送受信とも150ページ/月まで。それ以上は10円/ページがかかります)。
インターネットFAXとはいうものの、0AB〜Jの専用FAX番号を1つもらうことができます(0AB〜J番号は、東京03や大阪06など、事業所の場所によって色々な番号を選択することができます)ので、お客様は従来通りFAXを送信してもらえばOKです。

ただ、すでに従来のFAX番号は広く告知されてしまっていますし、FAX番号だけ変更しましたってのも格好がよくありません。
となると選択肢としては、

  1. ボイスワープを使ってNTTに転送してもらう
  2. 既存FAXの転送機能を利用して受信後転送をする
の2つが考えられます。
1は月額料金(自宅用回線で500円/月、事業所用で800円/月)がかかってしまいますし、2は利用しているFAXが転送に対応している必要があります。
今回は社内のFAXが転送機能を持っていたため、2の方式で転送をすることにしました(転送する際にeFax宛の通信料が発生しますが、これは仕方ないですね)。

で、eFaxに転送されたFAXはどうなるかというと、予め設定しておいたメールアドレス宛に添付ファイルとしてメールされます。eFaxでは最大5つのメールアドレスが設定でき、それら全てにメールが送られます。
弊社では主要なメンバーとevernoteのメールアドレスを登録しておきましたので、受信FAXは自動的にevernoteにも蓄積されます(これは便利)。

FAXの送信は以下の2つの方法で可能です。

  1. 従来のFAXで従来通り送信する
  2. eFaxのサーバ経由で添付ファイルとしてメール送信する
従来のFAX回線を残したままであれば、1の方法で従来の方法をそのまま残しておくことができます。もしFAX回線を解約してしまった場合は2の方法でFAX送信ができます。
2の方法で送信するには、相手先電話番号@efaxsend.comに添付ファイルを送信するのですが、この際の送信元アドレスとして予め最大5つのアドレスを登録しておくことができます(受信用のアドレスとは別管理です)。これにより、最大5人がメールを使ってファイルを送信することができます。
送信が完了すると、送信完了メールが送られてくるので、うまく送信できたか心配する必要もありません。なお、送信には送付状を自動的に付加する機能があるので、送付状を予め作る手間は省けます(送信ページは1枚増えますけどね)。

従来のFAX回線を残したままでの運用では、eFaxの利用料分+転送にかかる通信費だけコストアップにはなってしまいますが、従来のように紙で受信したときのその後の処理(コピーしたり、スキャンしたり、ファイルに保存したりしますよね?)を考えるとかなり効率は上がると思います。
事務所を移転するときに電話番号が変更になるようなときは、最初からeFaxだけで運用するのもひとつの手です。

☆2011/10/21 追記
支払い方法は当初クレジットカードになりますが、eFaxからの請求明細はでないそうです。何枚FAXを送ったかは毎回カスタマーセンターに問い合せが必要らしい・・・(これはあんまりだ)。
支払い方法を銀行振込に変更すれば請求書をメールで送ってくれるらしいので、とりあえず銀行振込に変更してみました。