⛽
Google Apps ScriptでAPIを作成しよう!
はじめに
この記事はこんな人におすすめ!
- 開発経験があまりない人
- 無料でAPIを作成したい人
- GASでHTTPリクエストを受信したい人
概要
- GASで、HTTPリクエスト(GET・POST)を受信
- GASで、HTTPリクエストのテストを実行
- GASのウェブアプリをデプロイ
- 外部のJavaScriptから、GASにHTTPリクエストを送信
1. GASのプロジェクトを新規作成
- PCのブラウザでGoogle Driveを開きます。
- GASのプロジェクトを作成したいフォルダに移動します。
- 「新規 > その他 > Google Apps Script」を選択し、プロジェクトを新規作成します。
- 以下の画像のようなプロジェクトが作成されます。
doGet(e)
関数、doPost(e)
関数を作成
2. -
doGet(e)
関数、doPost(e)
関数を作成することで、HTTPリクエスト(GET・POST)を受信することができます。コード.gsfunction doGet(e) { } function doPost(e) { }
- 以下のように変更すると、レスポンスをJSONにできます。コード.gs
function doGet(e) { + const result = {}; + return ContentService.createTextOutput(JSON.stringify(result)) + .setMimeType(ContentService.MimeType.JSON); } function doPost(e) { + const result = {}; + return ContentService.createTextOutput(JSON.stringify(result)) + .setMimeType(ContentService.MimeType.JSON); }
- 以下のように変更すると、HTTPリクエストのパラメータを取得できます。
ここでは例として、パラメータからuser
というキーの値を取得し、newUser
という変数に代入しています。また、newUser
変数をレスポンスとして返しています。コード.gsfunction doGet(e) { + const parameters = e.parameter; + const newUser = parameters.user; const result = { + user: newUser }; return ContentService.createTextOutput(JSON.stringify(result)) .setMimeType(ContentService.MimeType.JSON); } function doPost(e) { + const parameters = e.parameter; + const newUser = parameters.user; const result = { + user: newUser }; return ContentService.createTextOutput(JSON.stringify(result)) .setMimeType(ContentService.MimeType.JSON); }
3. GASでHTTPリクエストのテスト
- GASで、HTTPリクエスト(GET・POST)のテストを実行することができます。
ここでは例として、testDoGet()
関数とtestDoPost()
関数を作成しています。Logger.log()
でログを出力できます。コード.gsfunction testDoGet() { const e = { parameter: { user: "kinako" } }; const response = doGet(e).getContent(); Logger.log(response); } function testDoPost() { const e = { parameter: { user: "kinako" } }; const response = doPost(e).getContent(); Logger.log(response); }
ここまでのコード全文
コード.gsfunction doGet(e) { const parameters = e.parameter; const newUser = parameters.user; const result = { user: newUser }; return ContentService.createTextOutput(JSON.stringify(result)) .setMimeType(ContentService.MimeType.JSON); } function doPost(e) { const parameters = e.parameter; const newUser = parameters.user; const result = { user: newUser }; return ContentService.createTextOutput(JSON.stringify(result)) .setMimeType(ContentService.MimeType.JSON); } function testDoGet() { const e = { parameter: { user: "kinako" } }; const response = doGet(e).getContent(); Logger.log(response); } function testDoPost() { const e = { parameter: { user: "kinako" } }; const response = doPost(e).getContent(); Logger.log(response); }
- プルダウンから「testDoGet」または「testDoPost」を選択し、「実行」ボタンを押下します。
-
Logger.log()
でresponseがログに出力されます。
4. GASのウェブアプリをデプロイ
- 「デプロイ > 新しいデプロイ」を選択します。
- 歯車アイコンを押下します。
「ウェブアプリ」を選択します。
- 「アクセスできるユーザー」は「全員」を選択します。
「デプロイ」ボタンを押下します。
- ウェブアプリのURLをコピーします。
5. 外部から、GASにHTTPリクエストを送信
- 以下のコードは、外部のJavaScriptからGASにHTTPリクエストを送信するソースコードの例です。
url
変数に、先ほどのGASのウェブアプリのURLを貼り付けてください。index.html<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <input type="text" id="input" /> <button id="sendGet">GETリクエスト</button> <button id="sendPost">POSTリクエスト</button> <p id="output"></p> <script> const url = "<GASのウェブアプリのURLを貼り付け>"; const input = document.getElementById('input'); const sendGet = document.getElementById('sendGet'); const sendPost = document.getElementById('sendPost'); const output = document.getElementById('output'); // GETリクエストボタンがクリックされたときの処理 sendGet.addEventListener('click', async () => { const response = await fetch(`${url}?user=${encodeURIComponent(input.value)}`); const json = await response.json(); output.textContent = JSON.stringify(json); }); // POSTリクエストボタンがクリックされたときの処理 sendPost.addEventListener('click', async () => { const options = { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: `user=${input.value}` }; const response = await fetch(url, options); const json = await response.json(); output.textContent = JSON.stringify(json); }); </script> </body> </html>
- 上記のHTMLファイルを実行するにはいくつか方法があります。
例として、VS Codeでindex.htmlを開き、「実行 > デバッグなしで実行」を選択すると、HTMLファイルを実行できます。
さいごに
GASを使用して、簡易的なAPIを作成することができました。
これを参考に独自のAPIを作成してみてください。
-
UrlFetchApp.fetch()
関数を使用することで、GASから外部へHTTPリクエストを送信することができます。 -
SpreadsheetApp.getActiveSpreadsheet()
関数を使用することで、Google Sheetsにアクセスし、読み書きを行うことができます。
Discussion