プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

GAS(Google Apps Script)からATND APIにアクセスする。

はじめに

Google Apps Script 勉強会 #1 前日っていうことで(もう当日ですが。。)、
たまには少し予習しておこうかと思った次第です。


で、たまたまTwitter経由で知った、こちらのエントリー。
GASからCacoo API にアクセスする - @ikikko のはてなダイアリー
劣化コピーエントリをあげてみます。。

  1. Googleドキュメントでスプレッドシートを作って
  2. その上でGAS(Google Apps Script)を走らせて
  3. ATND APIの結果をスプレッドシートに展開してみよう

という企画です。

動作

メニューから起動して、


キーワードを入力したら、


そのキーワードに合致するイベントがスプレッドシート上に表示されます!(最大10件まで)


ソース(コメントいっぱい書いといたんで、そのまま読んでください)

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "ATND検索", functionName: "myFunction"}];
  ss.addMenu("スクリプト", menuEntries);
}

function myFunction() {
  // キーワードを入力
  var keyword = Browser.inputBox("キーワードを入力してください。");
  if(!keyword) {
    return;
  }
  
  // ATND APIに問い合わせ
  var response = UrlFetchApp.fetch("http://api.atnd.org/events/?keyword_or=" + keyword + "&format=json&count=10");

  // ATND APIの結果をパース
  var eventSearchResult = Utilities.jsonParse(response.getContentText());
  
  // スプレッドシートへの書き込み準備
  var range= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1);

  // スプレッドシートをクリア
  range.offset(0, 0, 11, 2).clear();
  
  // スプレッドシート(ヘッダ)への書き込み
  var titles = ["タイトル", "ATNDのURL"];
  for(var i=0; i<titles.length; i++) {
    range.offset(0, i).setValue(titles[i]);
  }

  // スプレッドシート(データ)への書き込み
  for(var i=0; i<eventSearchResult.events.length; i++) {
    var event = eventSearchResult.events[i];
    
    // タイトル
    range.offset(i+1, 0).setValue(event.title);
    
    // ATNDのURL
    range.offset(i+1, 1).setValue(event.event_url);
  }
}

デモ

このスクリプトは以下のURLで一般公開してありますので、コピーしてお試しください。
GAS_meets_ATND_API
GAS_meets_ATND_API(一発コピー用)