Google Apps ScriptでRest API

こんにちは、サイオステクノロジー技術部 武井です。今回は、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でリクエストされても全く同じ処理をするようにするための対応です。

 

コードが書けたら、いよいよ公開してみます。「ファイル」→「公開」→「ウェブアプリケーションとして導入」の順にクリックして下さい。

Screen Shot 2018-03-15 at 22.16.21

 

公開範囲を選ぶことが出来ますが、とりあえず最初は自分だけにしておきます。他の選択肢としては、同じドメインのユーザー、全世界の人たちに公開するというのがあります。

Screen Shot 2018-03-15 at 22.22.59

 

「現在のウェブアプリケーションのURL」をメモして「OK」をクリックして下さい。

Screen Shot 2018-03-15 at 22.24.01

 

先程メモした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で出力することが出来ます。色々楽しいことができそうです。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です