こんにちは、サイオステクノロジー技術部 武井です。今回は、Google Apps Scriptで超簡単なRest APIを作成したいと思います。
Google Apps ScriptによるRest APIとは?
Google Apps Scriptについては、前回、「Google Apps Scriptは超便利」のブログでご説明させて頂きました。このGoogle Apps ScriptはWebアプリケーションとして公開も可能です。ということは、JSONを返すようなRest APIも作成することが可能です。これができれば、例えば、「アレクサ、ヘルプデスクの未処理のチケット数を教えて」のブログでお話したAmazon Echoと組み合わせると、色々面白いことができそうです。
例えば、Google Apps Scriptで指定したユーザーのカレンダーをJOSNで返すRest APIを作成したとします。そのRest APIをLambdaから呼び出すようにすれば、Amazon Echoに「アレクサ、〇〇さんの予定を教えて」というと、その人の予定を答えてくれるようなスキルを作ることが可能です。
作ってみよう
超簡単なRest APIを作ってみたいと思います。メソッドはGET、クエリパラメーターにname=noriyukiみたいに名前を入れると、以下のJSONを返すのを作ってみます。
{ greeting: "noriyukiさん、こんにちは" }
プロジェクトを作成するところまでは、「Google Apps Scriptは超便利」のブログをご参考下さい。プロジェクトを作成したら、以下のコードを入力して下さい。
function doGet(e) { // (1) var name = e.parameter.name; // (2) var greeting = name + "さん、こんにちは"; var json = { // (3) greeting:greeting } return ContentService .createTextOutput(JSON.stringify(json)) // (4) .setMimeType(ContentService.MimeType.JSON); // (5) } function doPost(e) { // (6) doGet(e); }
以下、コードの説明になります。
(1)のdoGet関数は、HTTPのGETメソッドでリクエストされた場合の処理を記載する関数になります。
(2)は、クエリパラメーターを取得するところです。https://www.exapmle.com/script?name=ntakeiで指定された場合のときに、クエリパラメーターとして指定したnameの中身を取得する処理になります。
(3)は、JSONオブジェクトを生成しています。
(4)と(5)は、HTTPレスポンスを生成しています。ContentServiceのcreateTextOutputでHTTPレスポンスに出力するテキスト(ここでは(3)で作成したJSON)を指定して、setMimeTypeでは、HTTPレスポンスのContent-Typeを指定しています。
(6)は、HTTPのPSOTメソッドで送られてきた場合の処理です。そのままそのリクエストを doGet関数に渡しています。POSTでリクエストされても全く同じ処理をするようにするための対応です。
コードが書けたら、いよいよ公開してみます。「ファイル」→「公開」→「ウェブアプリケーションとして導入」の順にクリックして下さい。
公開範囲を選ぶことが出来ますが、とりあえず最初は自分だけにしておきます。他の選択肢としては、同じドメインのユーザー、全世界の人たちに公開するというのがあります。
「現在のウェブアプリケーションのURL」をメモして「OK」をクリックして下さい。
先程メモしたURLの後ろに「?name=noriyuki」というのをつけて、以下のようなURLを作成し、ブラウザのURL入力欄に入力して下さい。
https://script.google.com/a/sios.com/macros/s/XXXXXX/exec?name=noriyuki
すると、以下のようなレスポンスが返ってくるはずです。
{ "greeting":"noriyukiさん、こんにちは" }
(`・ω・´)シャキーン
これを応用すれば、もっと複雑なRest APIが作れるはずです。G Suiteの情報を簡単にRest APIで出力することが出来ます。色々楽しいことができそうです。