読者です 読者をやめる 読者になる 読者になる

When it’s ready.

出来るまで出来ない

x番目のプラットフォーム 「GAS」がなにげに凄い

"プラットフォーム” をウィキペディアで調べてみると

プラットフォーム(Platform)とは、コンピュータにおいて、主に、オペレーティングシステム(OS)やハードウェアといった基礎部分を指す。
一般的なコンピュータープログラム(アプリケーションソフトウェア)は、それぞれのOSに依存し、Windows、Mac OS XLinuxなどの専用のプログラムとして動いている。特定のハードウェアでしか動かないプログラムもある。例えば、PowerPC プロセッサ上の Linux では、PowerPC プロセッサ上のMac OS X 用や Pentium プロセッサ上の Linux 用の Adobe Reader7.0 は動作しない。
非依存とは、それらのOS、ハードウェアに依存せずに動くプログラムのこと。例えば、Javaはプラットフォーム非依存を売りにしており、他のプラットフォームの上にアダプタとしてJavaプラットフォームという名前のプラットフォームがあり、その上でJavaアプリケーションは動く。
http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)

という風にある。HWとOS的な物を指す言葉より、GAEとかSalesForce等のサービス的なモノに使っている方がよりイメージに近い。そんなプラットフォームも星の数は言い過ぎだが多くの種類がある。
要するに、今プラットフォームの一番おすすめはなんですか?と聞かれても、「用途による」とか「なんでもいい」など決定的なものがない幸せな状況にある。しかし、どのプラットフォームもそれなりにスキルが必要でやりたい事とやらなければいけない事の乖離がそれなりにある。

新しいプラットフォームを紹介 > GAS

ダイブ前から使えるようになっていたサービスなはずなのにあまり表に出てないきがするサービスで、GoogleAppsScript(以下GAS)というのがある。エクセルのマクロの用に思われているが、実はいろんなサービスを構築可能な非常に優れた仕組みを持っている。何が出来るか?特徴の例として、データの永続化や検索、Webページの動的生成や、メール送信、さらに認証も付いているといえば付いている。さらにAppsのスタンダードやプレミアであればドメイン内で区切られてサービス提供できるのも大きな利点である。上記特徴をもったものを無料でサクっと作りたいという場合にGASは最適なチョイスとなる。

GoogleDocsベースなので、ユーザーが増えたら遅くなるんじゃないか?認証のIDを預けるのが心配、新しいサービスを社内に提供しても浸透しなさそう。という心配は、既存ユーザであればすでに乗り越えている問題なので障壁はかなり低くなる。

さらに、(良いか悪いかは置いといて)ブラウザーのみで実装と実行が可能あり、言語はJavaScriptだけで動作が可能となる。GDataを用いれば、Java,Ruby,Python等の自前のスクリプトからデータ操作は可能だが、NearDomainSideにハードウェアや回線が必要になるが、Docs内で実行してくれるGASであれば一切のハードウェアを持つ必要がない。Docs上に実行環境があるというのは、別な利点もありドキュメントにトリガーを仕込むことが出来る、書類が開かれた時や変更があった時に実行することも可能だし、CRON的に時限で仕込むことも可能(最小で毎分が選択できる)

連携できるサービス群

現在使えるサービスとして

  • User Guide
  • All Services
  • Base Services
  • Calendar Services
  • Contacts Services
  • DocsList Services*
  • Finance Services
  • Jdbc Services*
  • Language Services
  • Mail Services
  • Maps Services*
  • Properties Services*
  • Sites Services
  • Soap Services
  • Spreadsheet Services
  • Ui Services*
  • UrlFetch Services
  • Utilities Services
  • Xml Services

上記リストのように多岐に渡る。上記リストの内容はまだ日々更新されておりまだまだ出来ることが増えそう。
(参考: http://code.google.com/intl/ja/googleapps/appsscript/class_calendar.html

例えば、IssueTrackerを作って、カレンダーに登録し変更があればメールで通知してそのやりとりをSitesに残すといった使い方もGASのみで構築可能になる。

こんな素敵なサービスが、すでに使える環境にあるのだが一般的にあまり使われていないのは、知ってるけど使えないと思われているのか、広く知られていないのか?どちらか(他にもあるか・・)だが、一部の人でも「初めて知った使ってみたい!」と思ってもらえるとより充実したライブラリがユーザーベースで成長していくと思うしそれによってよりハッピーになる人が増える。

ということで、前置きが長くなりましたがGoogleAppsScriptの勉強会的なHandsON形式の実装してみよう会って需要ありますでしょうか?という告知です。いきなりATND立ててショボーンだったら切ないので、参加してみたい人がいたらコメント、Star(参加してみたいかも)、ブクマ、RT等で教えてくださいませ

メール送信するサンプル


スプレッドシートを新規作成し ツール>スクリプト>スクリプトエディタ を開き以下のソースをコピペする。

// GLOBAL
DATA_SPREADSHEET_ID = get_sheet_id();
OWNER_EMAIL = Session.getActiveUser().getEmail()
  
// SendMail Function
function send_mail(){
  var title_text = 'タイトル:' + DATA_SPREADSHEET_ID + 'から送信'
  var body_text = '本文\n' + DATA_SPREADSHEET_ID + 'から送信されました。'
  MailApp.sendEmail(OWNER_EMAIL, title_text, body_text, {name: 'mail from a2c', noReply: false});
}

function get_sheet_id(){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  return doc.getId();  
  //Browser.msgBox(doc.getId());
};

function showID(){
  Browser.msgBox(DATA_SPREADSHEET_ID);
};


保存したら、メニューより実行>send_mail を選択すると実行権限与えますか?なウィンドウが開くので許可すると、スプレッドシートをひらいている人宛に、ドキュメントのIDの入ったメールが送信される。