Google Apps Script はもともと Google Apps で使われていたのですが、今では Google Docs(Google ドキュメント)でも利用できます。つまり、Google のアカウントがあれば誰でも利用できます。
スクリプト自体は Web ブラウザでも動作する JavaScript と同じなのですが、ローカルのブラウザではなくサーバー上で実行されます。
この間の Google I/O で GUI ビルダーの追加が発表されるなど、開発が容易になってきました。現在は日本語ドキュメントはほとんどありませんが、そのうち出てくるでしょう。
◆ Script でデータを取得し、Web ページとして公開
Google Apps Script は、Google スプレッドシート上か Google サイト上で実行できます。
Google スプレッドシートには、そもそもシートを他人と共有したり、Web ページとして公開したりできる機能があります。そこで試しに、何らかの処理をスプレッドシート上で行い、それを Web ページとして公開してみました。従来であればサーバーを用意し、その上で PHP や Perl などのスクリプトを実行して初めて実現できるようなページです。
今回は、Web API から REST でデータを定期的に取得し、それをスプレッドシート上に追加した上で、シートを一般公開して Web サイトに組み込んでみました。完成したページは私自身のサイトなのですが、こちらです。ATND のイベント情報と東電管内の電力情報を取得して表示しています。
◆ 作成の流れ
本記事は Google Apps Script の解説ではないので、上記のサイトが完成するまでの流れだけをざっと説明します。「ATND」と「電力」がありますが、電力の方を取り上げます。
(1) スクリプトを作成
まず、Google ドキュメントのスプレッドシートを新規作成します。スプレッドシート上で次に「ツール」メニューから「スクリプト エディタ」を選んで起動します。そこに Yahoo の「電力使用状況 API」からデータを XML で取得し、解析するようなスクリプトを作成します。取得したデータは、スプレッドシートの適当なセルに入力します(スクリプトについてはチュートリアルもある)。
(2) イベントで定期的に更新
Google Apps Script が便利なのは、トリガーを設定して定期的にイベントを発生させられる点です。例えば、天気データを 1 時間ごとに取得するようなケースです。
トリガーを設定するには、スクリプト エディタの「トリガー」→「Current script's triggers...」を選びます。「現在のスクリプトのトリガー」というダイアログが出てくるので、設定します。
まず「Run」で実行する関数を指定します。次に「Events」です。「Time-driven」はある時間ごとに実行、「From spreadsheet」はスプレッドシートで何らかのイベント(開く、編集するなど)が発生した場合に実行します。定期的に行いたい場合は、前者です。あとは何日おき、何分おき、といった項目を指定します。
(3) Web ページとして公開
電力のデータを定期的に取得し、スプレッドシートを更新できるようになったので、今度はこれを公開します。スプレッドシートの右上にある「共有」から、「ウェブページとして一般公開」を選択します。
通常の「共有」と異なるのは、Web ページは不特定多数向けに公開する点です。「共有」は、知り合いと共同作業する場合などに使います。「ウェブページとして一般公開」の場合、スプレッドシートは HTML テーブルはもちろん、なんと PDF や RSS などに変換されて公開されます。
下のようなダイアログで、公開の設定をします。今回は自分の Web サイトに埋め込みたいので、「ページに埋め込む HTML」を選択しました。ここで「ウェブページ」を選択すると URL をもらえ、単独のページになります。
(4) 自分の Web サイトに埋め込む
上の画面で取得した iframe タグを自分の Web サイトに埋め込みました。
完成した様子は、先ほども挙げましたがこちらです。「ATND イベント情報」という項目の下にある「東電管内の電力状況」です。
タブを切り替えるとグラフも表示できます。スプレッドシートのグラフ機能を使っているので、グラフも簡単に実現できます。
◆ まとめ
今回キーになったのは次の方法です。
・Google Apps Script を使って Web API 経由でデータ取得
・データ取得は定期的なイベントを設定し、自動化
・Google スプレッドシートを Web ページとして一般公開
・Web ページを自分のサイトに埋め込む
データを定期的に取得して加工し、自サイトで公開するまでが非常に楽です。
以上です。
注:本記事は執筆時点で最新です。時間が経つと内容が古くなるのでご注意ください。
スクリプト自体は Web ブラウザでも動作する JavaScript と同じなのですが、ローカルのブラウザではなくサーバー上で実行されます。
この間の Google I/O で GUI ビルダーの追加が発表されるなど、開発が容易になってきました。現在は日本語ドキュメントはほとんどありませんが、そのうち出てくるでしょう。
◆ Script でデータを取得し、Web ページとして公開
Google Apps Script は、Google スプレッドシート上か Google サイト上で実行できます。
Google スプレッドシートには、そもそもシートを他人と共有したり、Web ページとして公開したりできる機能があります。そこで試しに、何らかの処理をスプレッドシート上で行い、それを Web ページとして公開してみました。従来であればサーバーを用意し、その上で PHP や Perl などのスクリプトを実行して初めて実現できるようなページです。
今回は、Web API から REST でデータを定期的に取得し、それをスプレッドシート上に追加した上で、シートを一般公開して Web サイトに組み込んでみました。完成したページは私自身のサイトなのですが、こちらです。ATND のイベント情報と東電管内の電力情報を取得して表示しています。
◆ 作成の流れ
本記事は Google Apps Script の解説ではないので、上記のサイトが完成するまでの流れだけをざっと説明します。「ATND」と「電力」がありますが、電力の方を取り上げます。
(1) スクリプトを作成
まず、Google ドキュメントのスプレッドシートを新規作成します。スプレッドシート上で次に「ツール」メニューから「スクリプト エディタ」を選んで起動します。そこに Yahoo の「電力使用状況 API」からデータを XML で取得し、解析するようなスクリプトを作成します。取得したデータは、スプレッドシートの適当なセルに入力します(スクリプトについてはチュートリアルもある)。
(2) イベントで定期的に更新
Google Apps Script が便利なのは、トリガーを設定して定期的にイベントを発生させられる点です。例えば、天気データを 1 時間ごとに取得するようなケースです。
トリガーを設定するには、スクリプト エディタの「トリガー」→「Current script's triggers...」を選びます。「現在のスクリプトのトリガー」というダイアログが出てくるので、設定します。
まず「Run」で実行する関数を指定します。次に「Events」です。「Time-driven」はある時間ごとに実行、「From spreadsheet」はスプレッドシートで何らかのイベント(開く、編集するなど)が発生した場合に実行します。定期的に行いたい場合は、前者です。あとは何日おき、何分おき、といった項目を指定します。
(3) Web ページとして公開
電力のデータを定期的に取得し、スプレッドシートを更新できるようになったので、今度はこれを公開します。スプレッドシートの右上にある「共有」から、「ウェブページとして一般公開」を選択します。
通常の「共有」と異なるのは、Web ページは不特定多数向けに公開する点です。「共有」は、知り合いと共同作業する場合などに使います。「ウェブページとして一般公開」の場合、スプレッドシートは HTML テーブルはもちろん、なんと PDF や RSS などに変換されて公開されます。
下のようなダイアログで、公開の設定をします。今回は自分の Web サイトに埋め込みたいので、「ページに埋め込む HTML」を選択しました。ここで「ウェブページ」を選択すると URL をもらえ、単独のページになります。
(4) 自分の Web サイトに埋め込む
上の画面で取得した iframe タグを自分の Web サイトに埋め込みました。
完成した様子は、先ほども挙げましたがこちらです。「ATND イベント情報」という項目の下にある「東電管内の電力状況」です。
タブを切り替えるとグラフも表示できます。スプレッドシートのグラフ機能を使っているので、グラフも簡単に実現できます。
◆ まとめ
今回キーになったのは次の方法です。
・Google Apps Script を使って Web API 経由でデータ取得
・データ取得は定期的なイベントを設定し、自動化
・Google スプレッドシートを Web ページとして一般公開
・Web ページを自分のサイトに埋め込む
データを定期的に取得して加工し、自サイトで公開するまでが非常に楽です。
以上です。
注:本記事は執筆時点で最新です。時間が経つと内容が古くなるのでご注意ください。