2014年3月27日木曜日

【Google Apps Script】4. 参考となる講座や書籍、ウェブサイト

Google Apps Scriptの習得のために参考となる講座や書籍は今はあまり多くありません。JavaScriptから入ればたくさんの講座や参考書籍、ウェブサイトがありますので、まずはそれがいいかもしれません。実際私はJavaScriptとGoogle Apps Scriptを同時に習得しようとしていますが、2つ同時よりもJavaScript優先をオススメします。




まず、講座はドットインストールがオンライン動画講座を設けています。細かく内容が分かれてて、ストレスなく受講できますし、実践的な内容です。


ドットインストール(オンライン動画講座)
Google Apps Script入門 (全16回)
http://dotinstall.com/lessons/basic_google_apps_script

参考書籍ですが、


Google クラウドスクリプティング Google Apps ScriptによるGoogleパワーアップ活用ガイド
http://goo.gl/w7JF92
レファレンスガイド的な内容です。






Google Apps Scriptクイックリファレンス
http://goo.gl/xv92Jw
もっとも網羅したレファレンスガイドです。逆引きガイドの決定版。







Google Appsでつくる仕事便利ツール ~Google Apps Scriptで実践構築~
http://goo.gl/29Pk9Z
こちらはいくつかの仕事で仕えそうなサンプルコードを中心に解説しています。









ウェブサイトですが、こちらもまだGoogle Apps Scriptを取り上げているところは少ないです。

初心者のためのGoogle Apps Scriptプログラミング入門
http://libro.tuyano.com/index3?id=623009
こちらは一番参考にさせてもらっています。

Google Apps Script Examples
https://sites.google.com/site/scriptsexamples/
こちらは海外では書籍「Google Apps Script: Web Application Development Essentials」の著者が運営しているサイトが参考になります。


海外では比較的多くGoogle Apps Scriptのサイトやサンプルコードがあるので、検索してみてください。

2014年3月26日水曜日

【Google Apps Script】3. デバッグ環境

Google Apps Scriptは取り組んでいけばいくほど奥深くて面白いのですが、コードを書いて、一発で完成という域にはなかなか達するものではないかと思います。といいますか、人間ですので・・必ずミスは発生すると思ったほうが無難です。

そのために、Google Apps Scriptのエディタにはデバッグするための機能がいくつか標準でついています。

例えば、Googleカレンダーの今日の予定数を教えてくれるプログラムを書いたとします。




サンプルコード(// の行はコメントなので実行されません)
-----------------------------
function myEventstoday() {
    var today = new Date();
                 // 現在日時を取得します
    var events = CalendarApp.getDefaultCalendar().getEventsForDay(today);
                 // カレンダーに登録されている今日のイベントを取得します
 Logger.log('本日のイベントの数: ' + events.length);
                 // イベントの数をログに出力します
}
-----------------------------

こちらをコピペしてもらい、実行すれば恐らく問題なく動作します。あ、その前にログって何ということがあると思います。開発者の方には当たり前のものなのですが、意外とそのへんの説明が何を調べてもなにかと不親切でw・・。

Google Apps Scriptのドキュメントを見ると、クラスloggerの概要説明は"This class allows the developer to write out text to the debugging logs."とありますので、「この(logger)クラスを使うことで、開発者はテキストをデバッグ用ログにテキストを出力することができます」ということになるかと思います。

そもそもログの目的はいろいろありますが、Google Apps Scriptの中での主な目的は、
  • プログラム内部の動きを調べる
  • プログラムなどの処理や動作の過程を記録する
  • スプレッドシート画面などを使って伝えることができないメッセージを伝達する
あたりかなぁと思います。


で、スクリプトを実行した後で、メニューの「表示」→「ログ」を選んでいただくと





こんな感じでログに出力されたかがわかります。これはGoogleスプレッドシートを起点にしていますが、そもそもスクリプトだけが独立して存在するということもありえます。



Google Appsの新規作成メニューの中にスクリプトってありますよね。こういう場合は特に、途中の動作を確認する上でもログ機能は必要になりますね。











同じような機能で実行トランスクリプトがあります。メニューの「表示」→「実行トランスクリプト」を選んでください。ログは最終的なテキストの出力結果のみですが、実行トランスクリプトは、スクリプト実行時の各メソッドの 実現の様子を記録したものになります。

仮にスクリプトにバグがあった場合、まずは画面上部に赤色で表示が出ますが、「ReferenceError: 「s」が定義されていません。(行 5、ファイル「コード」)」のように、コードのどこに問題があるのかを指定してくれます。エディタに戻って該当する行を直せばOKです。
あとは実行トランスクリプトの中でも同様に問題箇所を提示してくれます。

最後にデバッグ機能があります。虫マークのボタンをクリックするとデバッグモードで実行され、問題箇所がハイライトされます。あと、下の部分に各定義や取り込んだデータの構造(例えばXMLデータなどの)がわかるようになっているので、デバッグだけではなく、コード作成中にも重宝する機能です。ただ、コードに問題がない場合はデバッグ画面は起動しないので、どうしても見たい際はわかりやすい余計な文字などを挿入してデバッグ画面が出るようにしています。

ということでブラウザだけでこういう環境が準備されているので、取りかかりやすいなと思う次第です。

2014年3月25日火曜日

【Google Apps Script】2. まずは使ってみよう!

Google Appsはリリースされてからかなり経つので世界中でユーザーも相当の数いるはずかと思います。そういう意味ではご存知の方も多いと思いますが、Google Appsはクラウドベースのオフィス生産性ツール群です。主なツールとしてはGmail、カレンダー、ドライブ、ドキュメント、スプレッドシート、スライドなどです。

Google Apps Scriptは、これらのGoogle Apps群については直接的に制御できるJavaScriptのオブジェクトを用意しています。その他のGoogleプロダクト(Google AnalyticsやYouTubeだったり)は広く提供されているそれぞれのAPIを使って制御する形になっています。

前回ポストでも書きましたが、こちらのページにGoogleからのすべての情報が網羅されています。
https://developers.google.com/apps-script/?hl=ja

早速何か簡単なコードを書いてみましょう。

私自身、一番使っているがスプレッドシートなので、そこでサンプルを作ってみます。

どこにいけばいいのか?
*なお、最近Google Appsは新しいインターフェースにバージョンアップしたので、新しいバージョンで話を進めます。

GoogleスプレッドシートからGoogle Apps Scriptを使う場合、スプレッドシートのメニューの「ツール」→「スクリプト エディタ」を選択すると、コードを書くためのエディタがブラウザ上に開きます。

ここにあります。







いかにもエディタっぽい作りですね。









では、簡単なコードを書いてみます。現在時刻を取得するJavaScriptのnew date関数を使ってみましょう。現在時刻を変数に取得して、スプレッドシートのA1に流し込むという簡単な処理です。//は実行されないコメントなので、コードの説明を入れています。参考にしてみてください。下記サンプルコードをコピーペーストでご自身のGoogle Apps Scriptに保存すればすぐに実行できますのでぜひやってみてください。

サンプルコード
-----------------------------
function gettimedate(){
  var mySheet = SpreadsheetApp.getActiveSheet();
                 // アクティブシートを取得します
  var myDate = new Date().toLocaleString();
           //現在時刻を取得し、myDate変数に格納します
    mySheet.getRange("A1").setValue(myDate);
               // シートのA1セルにmyDateの値を書き込みます
}
-----------------------------
これだけです。では実行してみましょう。最初にスプレッドシートと、コードが格納されているプロジェクトは保存する必要があるので、名前を付けて保存します。その上で、三角マークの実行を押してください。そうすると、「承認が必要です」というダイアログが出るはずです。

続行を押して処理を続けてください。「このアプリが次の許可をリクエストしています:」という別にダイアログが出るので承認してください。これらは基本的には一度だけ出るものと思ってください。



実行がされて、A1セルに、「2014/03/25 17:40:45 JST」が入りました。簡単ですね!

こんな感じです。これは一例ですが、スプレッドシートを開いたときに自動的に処理が実行できるようにもできますし、「毎日7:00-8:00の間に自動実行させておく」という設定も簡単にできます。

こういったことが他のGoogleドキュメントやGmailなどでもできる、という理解でいてください。

今日はここまで!

2014年3月24日月曜日

【Google Apps Script】1. GASで簡易マーケティングダッシュボードを作る(シリーズ)

最近自分のお気に入りのツールは紛れもなくGoogle Apps Scriptだと思います。

Google Apps Scriptとは?
Google Apps Script(グーグル・アップス・スクリプト)とは、Googleが提供しているスクリプト言語でGoogle Appsを拡張するサービスです。もう少し開発寄りの言い方をすると、JavaScriptで記述する、サーバーサイドスクリプト環境です。基本的にはJavaScriptが書ければ動かすことはできます。Google Apps Scriptと呼んでいるのはGoogle Appsを操作するための機能が揃っているので、JavaScript + Googleのオブジェクトライブラリと理解すると早いかもしれません。

Google Apps Script
https://developers.google.com/apps-script/

Google Apps Scriptでできること
まず、GmailやGoogleスプレッドシートなどのGoogle Appsの拡張ができます。拡張と言っているのは、例えば表計算であるGoogleスプレッドシートの中で使う独自の関数を作ることができます。様々な自動処理ができます。例えばGoogleの入力フォームに登録データが入ってきたら、データが格納されるスプレッドシートの中から内容を抽出して自動的にGmailでメール文を作ってアラートメールを送信する、ということもできます。2つ目に、Google Analyticsなど、Google Apps以外のGoogleサービスのデータ操作ができます。3つ目に、Google以外のデータを取り込むことも可能です。

少し別の見方をすれば、「Google Appsの機能を活かしたウェブアプリケーションを作成することができる」とも言えるかと思います。

なぜGoogle Apps Scriptに興味があるのか
Google Apps Scriptに興味がある理由はいくつかあります。

  1. 基本的にはJavaScriptなので入りやすいかと思った次第です。
  2. 必要なのはブラウザだけ。ソースコードの編集、実行、デバッグがすべてできます。
  3. 2に関連しますが、他の言語よりも比較的楽にサーバーサイド環境が作れます。
  4. データを取り込むためのレポジトリが作りやすいです。簡単なものであればGoogleスプレッドシートでもいいし、もう少し大掛かりであればScriptDB、Cloud SQL、Big Queryと、拡張性がある程度は担保されています。
つまり「ちょっとしたこと」から「それなりのこと」までが実にやりやすいサービスなのではないかと思っています。JavaScriptベースなところがGoogleの思想が入っているところかと思います。今後出てくるGoogleのアプリケーションまで、このGoogle Apps Scriptに準ずるような形で制御できるようになると考えています。実際、Google AdWordsの中のAdWordsスクリプトも同じですね。ちょっとした入稿や入札に関わる操作もできますし、スプレッドシートに格納したデータからトリガーした動きをさせることも可能です。よって、今後Googleは各アプリケーションの基盤にこのスクリプト環境を位置づける可能性があると思うので、習得しておいて損はないなと思ったのが理由でもあります。

何をするのか?
Googleアプリケーションのデータ、Google以外のさまざまなデータを引っ張ってきて、主にスプレッドシートにまとめ、簡易のマーケティングダッシュボードを作ります。私のいる会社では毎週の営業・マーケティング系ミーティングでGoogleスプレッドシートを使っていますが、ウェブサイトの訪問者数等をトラックするGoogle Analyticsのデータ、出版書籍をトラックするAmazonのデータ、Facebookページのパフォーマンスをトラックするデータはこのスプレッドシートで管理しています。みんなでデータが見えるようになってよかったと思えることはたくさんあります。「見える化」の効果ですね。その他にも取り込みたいデータはたくさんあるので、一つ一つ取り組みながら、その工程やサンプルコードなども公開して行こうと思います。

では次回から実践に入っていきます!