0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GAS + API Gateway + Lambda 連携させてスプシの値をPOSTする

Posted at

はじめに

本記事ではGASからAPI GatewayのREST APIをコールする処理を実装していきます。

ゴール

  1. GASのスクリプトを実行して、スプレッドシートから取得した値をAPIにPOSTする
  2. APIからステータス200でレスポンスが返ってくることを確認する
GASのログイメージ
Response: {"statusCode": 200, "body": "test1 を受け取りました。"}

作るもの

image.png

  • 処理フロー:スプレッドシート→GAS→API Gateway→Lambda

1. Lambdaの準備

簡単なLambda のソースとして、本記事では下記のものを使用します。

lambda_function.py
def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': f"{event['data']} を受け取りました。"
    }

2. API Gateway のエンドポイント作成

コールする用の REST API のエンドポイントを作成します。
下記の設定でメソッドを作成し、リソースをデプロイしておきます。

  • メソッドタイプ:POST
  • 統合タイプ:Lambda 関数(上記1で作ったLambdaを指定)

1. スプレッドシートの準備

サンプルとして、APIにPOSTする用の値を A1:A5 に記載しておきます。

image.png

サンプル
test1
test2
test3
test4
test5

3. GASのスクリプトを作成

GASのスクリプトを作成します。

main.gs
function sendDataToApiGateway() {
  const SPREADSHEET_ID = 'スプシのID';
  const API_ENDPOINT = 'APIのエンドポイント';

  try {
    // スプシ
    const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
    const sheet = spreadsheet.getActiveSheet();
    // A1:A5の範囲の値を取得
    const values = sheet.getRange('A1:A5').getValues();

    for (let i = 0; i < values.length; i++) {
      if (values[i][0]) {
        const requestOptions = {
          'method': 'POST',
          'headers': {
            'Content-Type': 'application/json'
          },
          'muteHttpExceptions': true,
          'payload': JSON.stringify({
            'data': values[i][0]
          })
        };

        // API Gatewayにリクエストを送信
        const response = UrlFetchApp.fetch(API_ENDPOINT, requestOptions);
        // レスポンスの内容をログに出力
        Logger.log('Response: ' + response.getContentText());
      }
    }
  } catch (error) {
    Logger.log(error);
  }
}

4. スクリプト実行

GASの 実行 ボタンを押下してスクリプトを動かすと、API Gatewayからステータス200でレスポンスが返ってくることを確認できました。

image.png

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?