概要
Google Apps Script (GAS) から AWS Lambda の Chalice フレームワークを通じて POST リクエストを送信し、値を取得する方法について調べました。特に、Chalice 側で送信された JSON ペイロードの処理方法に焦点を当てています。
結論
Chalice で受信した JSON ペイロードからデータを取得するためには、実装がこちらです。
app.current_request.json_body.get(key)
前提
- AWSアカウントを所持していること
手順
Chalice のインストールと環境構築
Chalice をインストールします。
pip install chalice
プロジェクトを作成します。
chalice new-project chalice-sample
Chalice アプリの修正
次に、Chalice 側のアプリケーション (app.py
) を編集し、POST リクエストを受け取るルートを定義します。
from chalice import Chalice
app = Chalice(app_name='sample')
@app.route('/post', methods=['POST'])
def post_handler():
request = app.current_request
json_body = request.json_body
payload_value = json_body.get('B3')
return {'message': 'Success!', 'B3': payload_value}
ポイント解説
-
json_body.get('B3')
は、POST リクエストの JSON ペイロードから B3 というキーの値を取得しています -
app.current_request
は Chalice が提供するオブジェクトで、現在の HTTP リクエストにアクセスできます
Chalice デプロイ
$ chalice deploy
以下のように返ってくればOKです
補足
Chalice を使用すると、AWS Lambda を使用する Python アプリケーションをすばやく作成してデプロイできます。Chalice CLI を使用すると、数分で REST API を Amazon API Gateway と AWS Lambda にデプロイできます。
AWS コンソール画面
lambda がデプロイしていること、API Gatewayに連携していることを確認します
GAS のスクリプト実装
次に、GAS から Chalice のエンドポイントに対して POST リクエストを送信するスクリプトです。このスクリプトは、Google スプレッドシートの特定のセルの値を取得し、それを Chaliceで作成したREST API に送信します。
function sendPostRequest() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('シート1');
const b3Value = sheet.getRange('B3').getValue(); // B3セルの値を取得
var url = 'https:// xxx .amazonaws.com/api/post'; // Chalice デプロイ時に出力された Rest API URL
var payload = {
'B3': b3Value,
};
var options = {
'method': 'post',
'contentType': 'application/json', // JSON ペイロードを送信
'payload': JSON.stringify(payload) // JSON に変換して送信
};
try {
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText()); // レスポンスをログに出力
sheet.getRange('C3').setValue(response.getContentText()); // C3セルにレスポンスを書き込む
} catch (error) {
Logger.log('Error: ' + error.toString());
}
}
ポイント解説
Google スプレッドシートからのデータ取得
sendPostRequest
関数は、スプレッドシートの B3
セルから値を取得し、それを JSON 形式で Chalice のエンドポイントに送信します
POST リクエストの送信
GAS の UrlFetchApp
を使って、取得した値を Chalice に送信します。送信されるペイロードは、{'B3': b3Value}
というシンプルな JSON 形式です
レスポンスの処理
Chalice からのレスポンスを取得し、それをログに出力しつつ、スプレッドシートの C3
セルに書き込んでいます。
検証
buttonを押下
↓
outputが出力されれば成功です!!
まとめ
GAS から Chalice (AWS Lambda) を経由してデータを送信・受信することは、シンプルな POST リクエストのやり取りで実現できます。Chalice 側では、app.current_request.json_body.get('key')
でペイロード内の特定のキーを簡単に取得できます。
参考