Google Apps ScriptでRest API

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!
https://column.api-ecosystem.sios.jp/connect/kong/1081/

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。SBOMを全く知らない人から、開発との統合までを紹介するので様々なレベルの方に学びがあるライブとなる予定です!
https://tech-lab.connpass.com/event/321422/

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!
https://tech-lab.connpass.com/event/319077/

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!
https://tech-lab.connpass.com/event/319532/

こんにちは、サイオステクノロジー技術部 武井です。今回は、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で出力することが出来ます。色々楽しいことができそうです。

アバター画像
About 武井 宜行 271 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる