ガジェット通信

見たことのないものを見に行こう

Google AppsとOffice365を使いこなすためのGoogle Apps Script・Office API最強ツール

DATE:
  • ガジェット通信を≫

Google AppsとOffice365のそれぞれの強みを知ろう

今回の勉強会タイトルは、「Office真夏の最強ツール決定戦 O1 CLIMAX 14」。Office系アプリケーションの2強、Google AppsとOffice365のそれぞれの強みを知ろうというもの。

これはプロレスファンならすぐに気付くと思われるが、新日本プロレスが毎年夏に総力を結集して開催されるイベント「真夏の最強決定戦『G1 CLIMAX 26』」をもじったもの。秋も深まりつつある10月にもかかわらず、「真夏の~」という言葉が付いているのはそのためである。

最強決定戦とは銘打っているものの、今回の勉強会はGoogle AppsとOffice365のいずれかに軍配を上げるということではなく、あくまでもそれぞれをうまく使いこなすための知識を得るためだ。

GoogleスプレッドシートでGoogle Apps Scriptを使う

最初に登壇したのは、SchooでGoogle Apps Script入門の講師を務めたり、フリーランスで活動している小菅達也さん。

セッションタイトルは「まぁ!簡単!Google Apps Script入門」。Google Apps Scriptとは、プログラムを使って、各Googleアプリケーションを制御したり、連動・連携させたり自由自在に操ったりするためのサーバーサイド・スクリプト環境だ。

Google Apps Scriptの良さは第一に無料であること。第二に環境構築が簡単なこと。ネットとGoogleアカウントがあればすぐに環境構築が行えるのだ。

第三にGoogle Spread SheetはExcelの関数も使えること。

第四はJavaScriptベースなので、JavaScriptが分かっている人なら、すぐに扱えるようになること。

第五に学ぶことでほかのことに応用が効くこと。OS Yosemite以降のApppleScriptなど、JavaScriptベースで動く言語が増えているので、そういったところでも応用が利くというわけだ。

デメリットはまだまだ情報が少ないこと。特に日本語の情報が少ない。公式のレファレンスはすべて英語となっているので、日本語で勉強したい人は電子書籍版「Google Apps Scriptビギナーズガイド: Googleをプログラミングせよ!」をお勧めする。

まずは使い方について。Google Apps Scriptは、Googleドライブの新規からスプレッドシートを立ち上げ、ツールからスクリプトエディタをクリックすれば使えるようになる。あとは立ち上がったエディタの中で、Google Apps Scriptを書いて動かしていくだけだ。

最初にGoogle Apps Scriptを使おうと思ったのは、Webの学校で事務仕事をしていたとき。授業予約にGoogle Formをひんぱんに使用していたが、自動返信メールがデフォルトで実装されていないため、予約者から「ちゃんと予約されていますか」という問い合わせが電話やメールなどがあり、余計な時間が取られ、仕事でのミスが連発して悩んでいいたのである。

Excelがあまり使えないため、Google Apps Scriptで自動返信メールを実装したところ、予約状況の確認の問い合わせがなくなった。また毎月フォーマット修正が必要だった申込みフォームも、Google Apps Scriptでフォーマット自動作成機能を実装した。

自分以外の事務員でも活用できるよう、開催日、開始時間、終了時間、料金などの情報を入れる部分はスプレッドシートに落とし込み、魔法の隠しメニューを用意し、「申込みフォーム」を作るという項目を作った。これを選択すると、先ほどのExcelで設定した内容に基づいたフォームができる。

先に紹介した「自動返信メールを設定する」も「魔法の隠しメニュー」に用意していた。このようにGoogle Apps Scriptは仕事の課題解決・効率化に役立てることができる。

これからGoogle Apps Scriptを勉強しようという人は、スプレッドシートから始めるのがお勧め。GoogleスプレッドシートからGoogle Apps Scriptを立ち上げて、あとはいろんなアプリケーションと連携させればいい。

Google Apps Scriptを使うための考え方としては、命令したいモノ(どこに命令したい)を指定して、命令(どんな命令をしたい)の内容を記載すること。

例えばA1のセルの地色を赤に変えるという場合は、どのアプリケーションを指定するところから始まる。


次にどのファイルに命令するのか、指定したファイルのどのシートに命令するのか
→getAtciveSheet()or getSheetByName(”シート1″);、そして指定したシートのどのセル(Range)に命令したいの?
→getRange(“A1”)。

ここまでやって、目的のセルにたどり着ける。つまり都道府県から住所を指定していくような感じである。これはカレンダーやGmailの場合も同じ。

ただGoogle Driveの場合だけ概念が異なる。直接、ファイル名を指定することができないので、FileIterator(ForuderIterator)を使って、該当データが1つしかなくても、複数データがあるかのごとく動くので、留意が必要。

これでも難しいと思う方は、Google Appsをより便利に使う機能がまとまったセットがアドオンにあるので、それを活用するのも手だ。

ぜひ、日々の時間効率化のためにも、Google Apps Scriptを試してみてほしい。

Google Apps Scriptによる高度な開発プロセス

続いて登壇したのは、永和システムマネジメントの村上雅彦さん。GitHubやTwitterでは@fossamagnaというアカウントで活動しているとのこと。

セッションタイトルは「Apps Scriptによるより高度な開発プロセス」。

Google Apps Scriptによる高度な開発プロセスとは、2015年2月にG Stuire Developers Blog(当時はGoogle Apps Developers Blog)で紹介された開発プロセスのこと。

先のセッションで説明があった、ブラウザでコードエディタを立ち上げるのではなく、Google上のApps Scriptはランタイムとして利用し、コーディングなどは開発者のマシン上で行うことを言う。

つまり、Drive API Export/Importを利用したApps Scriptのローカル開発である。Drive API Export/ImportとはGoogle Drive RESET APIでApps Scriptのソースコードをインポート・エクスポートする機能である。

Google Drive上のApps Script(gsファイルやhtmlファイル)をローカルマシンにエクスポートしたり、ローカルマシンからのインポートすることが可能になる。

APIを叩けばコマンド一つでGoogleドライブ上のコードをローカルPCに持ってくることができるというわけだ。ただし注意点がある。

第一に可能なのはスタンドアローンプロジェクトのみであること。SpredSheetやDocsなどのコンテナから立ち上げたプロジェクトは付属になっているので使えない。スタンドアローンプロジェクトで作れない機能はあるが、スプレッドシートなどの独自関数などコンテナ付属のプロジェクトなので対象外となる。

第二にアプリケーションの管理やWebアプリの公開、実行はできない。そういうことはScript editorで実施する。

第三にプロジェクトでインポートするとき、JavaScriptのコードのバリデーションが実行されること。バリデーションに引っかかると5xxエラーになってしまうのだ。

第四にプロジェクトのソースをまるごとインポート・エクスポートするので、部分的なインポート・エクスポートはできない。
このような注意点がある一方で、ローカル開発でのメリットとは何か。

ソースが手元にあるので、Gitなどでソース管理できること。次に好みのエディタやIDEを利用できること。LintやMinifyなどのサードパーティーのツールが利用できること。そしてテストが実施しやすいことだ。

実際にメリットを活用した一歩進んだ開発プロセスを紹介する。

まずはApps Scriptでもrequire()関数を使うこと。require()とは、JavaScriptを書いている人なら知っているが、CommonJSのモジュール機能である。Node.jsならネイティブに利用可能。またBrowserifyやWebpackを利用することで、ブラウザ環境でも利用できる。

Apps Scriptにもライブラリというモジュール機能がある。Apps Scriptネイティブのモジュール機能はライブラリで、Apps Scriptのプロジェクトを別のプロジェクトから利用する仕組みだ。ライブラリ側は普通にコーディングし、あとは公開するだけ。Google Driveの共有機能で簡単に公開できる。

利用する側は使いたいライブラリをScript editorでライブラリのプロジェクトキーを指定して利用する。利用時は利用する側がライブラリに割り振ったオブジェクトにはやした形式で利用できる。

具体的なコード例を紹介する。

これは非常に古式ゆかしいJavaScriptのライブラリ。ライブラリの問題点は別プロジェクトを読み込んで実行するので遅いこと。公式サイトトップでも警告している。

次に管理は手動であること。ライブラリの追加・削除はScript EditorのUIからのみ可能となっている。第三にライブラリとアプリ側で共有されているモノが複雑なことだ。

そこで、一歩進んだ開発での解決策として用いるのが、require()である。Apps Scriptでのrequire()はBrowserify + gasifyで実現する。

Browserify + gasifyのポイントは、BrowserifyならApps Scriptのライブラリに頼らずにモジュール機能を利用でき、依存モジュールの管理も「package.json」で可能になる。しかもnpmで公開されているモジュールが利用できる。

だがBrowserifyだけではApps Scriptで実行可能なコードが出力できないので、gasifyと組み合わせて利用するのである。

サンプルコードは次の通り。

またApps Scriptでbrowserifyのビルド方法は次のコマンドを実行する。

そしてビルドしたファイルをDrive API Export/Importでプロジェクトにインポートすれば完了だ。

gas-manager、node-google-apps-scriptを使えばコマンドライン一つでインポートできる。

Apps Script向けのテストフレームワークは次の2種類。
Node.jsで実行するタイプ
Apps Scriptとして実行するタイプ。後者のタイプの方が種類はある。

CIでも、Node.jsで実行するタイプはOKだが、Apps Scriptでとして実行するタイプのテストフレームワークの場合、認証が絡んできたりするのでCIとの連携は難しい。そこで作ればいいと思い作ることにした。それがgas-testである。これであればJSON、XML、Loggerから選択して結果を出力できる。

またgas-testを利用するためのコマンドラインツールも作成した。それがgas-test-cliだ。gas-testサンプルプロジェクトはこちらで公開されている。

最後に高度な開発のオススメ構成は次の通り。

これを参考にApps Scriptで高度な開発プロセスをぜひ始めてほしい。

Office365 APIの最新事情を紹介

最後に登壇したのは、日本マイクロソフト エバンジェリストの松崎剛さん。

セッションタイトルは「Office365ことはじめと応用編」。

世界中で多くの人が使っているOffice365。日経225銘柄企業の80パーセントが使っている。Office365とは一口で言うと、Officeのサーバーサイドとクライアントデスクトップを合わせたブランドのこと。

つまりデスクトップライセンス+サービスという、サービスサブスクリプションの形で提供しているのである。1年間のサブスクリプションで、インストールもWebサイトからインストールする。インストールの最中から使えるようになっている。随時アップデートされ、常に新しい状態で使える。

よく地球上に7人の一人がOffice365を使っていると例えられるが、これはExcelとかを使っている人の数。Office365にはコンシューマ版とコマーシャル版があるが、もう一つ知っておいてほしいのが、コマーシャル版の戦略。

コマーシャル版ではワークフロントのデータを集めていくための製品体系になっている。ワークフロントを全部キャプチャーしており、みなさんが何時間メールに費やしているのか、どんな人とやり取りをしているのかなどのシグナルも取得している。

このようにOffice365は、ワークフロントのデータがとれるようになっているのも特徴の一つだ。

また「MicrosoftがiPhoneを浸食している」というタイトルの記事が1年前に出たように、現在、iPhoneやAndroidの上で、Microsoftのアプリが増えている。実はこれも一つの戦略である。

MicrosoftではAzureというプラットフォームを出しており、Officeの戦略はそれをすべてのデバイスで使ってもらうと言うのである。最近はWindows Phone版よりも先にiPhone版やAndroid版を出すようになっている。すべてのデバイスでアプリを使ってもらい、作業を始めるとインサイトがたまっていく。

今日の本題はOffice365のAPIについて。最近、Office365ではすぐに使えるアドインがさまざま登場している。例えばExcelでもさまざまなアドインが開発されている。しかも今までのWindowsでしか動かないCOMアドインではなく、これらはマルチデバイス対応となっている。

もう一つ、APIについても昔のマイクロソフトのAPIは.Netでしか使えなかったが、現在はRESTベースで作れるようになっている。つまりGoogleでアプリを作っているのと同じような概念で作れるというわけだ。

Office 365 APIは、まず、Webブラウザ(モバイルアプリの場合は、Browser Componentなど)で、サインイン画面にアクセスする。サインイン画面が表示されたら、二要素認証やAD連携などの必要な処理はブラウザが行ってくれるので、開発者や気にする必要はない。

認証が終わり、アクセストークンを飛ばせばいろんなことができるようになる。メールはもちろん、ユーザー一覧を取得できたり、メールの通知が来たらRESTを逆にコールバックしてもらうということもできる。またファイル同期やメール同期など、カレンダー同期など、アプリケーション間で同期機能を作れたりもする。

例えばFind Meeting APIというAPIでは、空き時間の検索ができる。しかもレバレンシー(関連性)順に並べてくれるのだ。レバレンシー順といっても夜の時間などおかしな時間を結果として返してきたりはしない。

次にSkype for BusinessのAPIも提供している。これを使えば、OAuthでログインしてIMを飛ばすことができるようになる。ちなみにオーディオビデオコールは、WebRPCを使って実現するため、ブラウザ上でホストしないとできない。Edgeはフルサポートしているが、Chromeは小さいプラグインが必要になる。

REST APIで、よく使っているファイルをレバレンシー順(関連性)やPeopleAPIが取得できる。Do.comというアプリケーションがあるが、Office365でログインし、OAuthでログインが完了するとアクセストークンやIDトークンが取れる。

このアプリの中でメールアドレスをオートサジェスションで入力している最中にPeopleAPIを発行すると、アウトルックで普段、やり取りしている人をDoアプリケーションでも出すこともできる。

このようにOffice365はワークフロントの情報をすべて持っているという概念を採用しているので、ワークフロントの情報をアプリで連携していくことができるのだ。

今まで紹介してきたことは、Googleでもできるかもしれない。そこでOffice365でしかできないことを紹介する。まずはAPI登録ができること。例えばGmailにアクセスやGoogleドライブにアクセスする場合、スコープの設定が必要になるが、Office365の場合、その自作したAPIの登録ができるのだ。

そして自分が作ったAPIを呼ぶときは、Office365のOAuthを使う。APIは渡されたアクセストークンをチェックする必要はあるが、このAPIからさらにメールのAPIを呼ぶことなどもできる。アクセストークンを使って別のアクセストークンを取れるため、かなり高度なモジュール化が実現できるのだ。

またロボットなど、ログイン画面を表示できないデバイスの場合は、デバイスプロファイルフローを使うことができる。

例えばPalmiというロボットでは、Office365と連携するアプリが登場しているが、PalmiはIDやパスワードは入力できない。そこでPalmiが話すコードを、スマートフォンでデバイスのログインがサイトにアクセスして入力すると、PaimiがOffice365にログインされる。

このような使い方が可能になるというわけだ。APIが使えるのは、Office365のコマーシャル版のみ。というのもコンシューマ版とエンドポイントが異なるからだ。

しかし今は統合しつつあり、v2認証エンドポイントを使ってMicrosoft Graphのエンドポイントを認証すると、コマーシャル版とコンシューマ版の両方を受け入れるアプリを作成できるのだ。このような形で最近のAPI提供が始まっている。

HoloLensセッションもあるよ!Web VRとか文化祭を11/23開催

大盛況に終わった「WebにVRは必要なのか?」。そのスピンアウト企画として、WebVRを支える技術から、最新のMR (Mixed Reality) 技術まで紹介する勉強会「Web VRとか文化祭」が11/23(水) に開催されます。
日 時:2016/11/23(水) 13:00 ~ 18:00
会 場:イベント&コミュニティスペース dots.
住 所:東京都渋谷区宇田川町20-17 NMF渋谷公園通りビル 8F
詳細はこちらから

主なセッション

「UnityでホログラフィックUnityちゃんを呼び出す方法」(T.M.C.N前本知志氏)
「HoloLens 2Dでもここまでできる」(初音玲氏)
「WebVR を支える技術(仮)」(Mozilla Japan 清水智公氏)

まだまだ調整中のセッションも!興味のある方はぜひこちらからご参加ください。

当日デモも見れる講演動画はこちらから!

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

TOP