Appsheet API を Lambda で送信する方法


## はじめに

AppSheetは、ユーザーがコーディング知識なしでカスタムモバイルアプリを作成できるプラットフォームです。

AppSheet APIを使ってAWS Lambda関数からデータを操作する方法について解説します。
この記事では、AppSheetのAPIを使って、AWS Lambda経由でデータを操作する方法に焦点を当てています。
API Keyの取得方法からLambda関数の作成、APIの利用方法までを順を追って説明します。


## もくじ

1. [AppSheet API Key を取得する](#AppSheet-API-Key-を取得する)
2. [Lambda](#Lambda)
   - [Lambda Layer を作成する](#Lambda-Layer-を作成する)
   - [Lambda 関数を作成する](#Lambda-関数を作成する)
3. [参考](#参考)

## AppSheet API Key を取得する

AppSheet APIを使うには、API Keyを取得する必要があります。
以下の手順でAPI Keyを取得してください。

1. **アプリケーションのダッシュボードにアクセス**
   - API Keyはアプリケーションごとに異なります。
2. **「Settings > Integrations」をクリック**
3. **「Create Application Access Key」をクリック**
4. **「App Id」と「Application Access Keys」をメモ**

## Lambda

AWS Lambdaを使ってAppSheet APIと通信を行います。
まずはLambda Layerを設定し、次にLambda関数を作成します。

### Lambda Layer を作成する

Lambdaで`requests`ライブラリを使うためには、最初にローカル環境でのセットアップが必要です。

```bash
$ mkdir python && cd python
$ pip3 install -t python requests
$ zip -r python.zip python/
```

上記のコマンドを実行後、作成した`python.zip`をLambda Layerにアップロードします。

### Lambda 関数を作成する

1. **新しいLambda関数を作成し、作成したLambda Layerをアタッチします。**
2. **環境変数を設定する**

    ```
    APPSHEET_APP_ID = {先ほど取得した「App Id」を入力して下さい。}
    APPSHEET_APPLICATION_ACCESS_KEY = {先ほど取得した「Application Access Keys」を入力して下さい。}
    ```

3. **以下のソースコードを`lambda_function.py`に貼り付けます。**

このコードは`tests`テーブルに`test.png`ファイルのパスを更新するものです。Row IDはkeyとして必須です。

```python
import os
import json
import requests

def lambda_handler(event, context):
    # 環境変数から AppSheet API の設定を取得
    app_id = os.environ.get('APPSHEET_APP_ID')
    application_access_key = os.environ.get('APPSHEET_APPLICATION_ACCESS_KEY')
    table_name = 'tests'

    api_url = f'https://api.appsheet.com/api/v2/apps/{app_id}/tables/{table_name}/Action'
    headers = {
        'ApplicationAccessKey': application_access_key,
        'Content-Type': "application/json"
    }

    # 送信するデータ
    data = {
        "Action": "Edit",
        "Properties": {
            "Locale": "en-US",
            "Timezone": "Pacific Standard Time"
        },
        "Rows": [
            {
                "Row ID": "Di8JAaCu2ItMKd5aqWi7",
                "image": "/appsheet/data/NewApp-456626611/tests/test.png"
            }
        ]
    }

    # POSTリクエストの送信
    response = requests.post(api_url, headers=headers, data=json.dumps(data))
    
    # レスポンスの確認
    if response.status_code == 200:
        print("データの送信に成功しました。")
        print(response.json())
    else:
        print("データの送信に失敗しました。")
        print("status_code", response.status_code)
        print("text", response.text)
    
    return {
        'statusCode': 200,
        'body': json.dumps('Success!')
    }
```

## まとめ

この記事では、AppSheet API Keyの取得方法から始まり、AWS Lambdaを介してAppSheet APIを使うための設定までを説明しました。
これらの手順に従って、AppSheetとAWS Lambdaを連携させることで、より強力なアプリケーションを構築できるでしょう。

## 参考

- [Use the AppSheet API](https://support.google.com/appsheet/topic/10105767?hl=en&ref_topic=10101404&sjid=209158336227127685-AP)
- [【AWS】LambdaにrequestsライブラリをLayerで追加する](https://sebenkyo.com/2021/05/21/post-1979/)

---
### 会社紹介

**株式会社 Mosaica**  
最先端テクノロジーで社会課題を解決し、持続可能な未来を創造する IT カンパニー。
AI ソリューション、クラウド統合、DX 推進、経営コンサルティングなど包括的なサービスでビジネス変革を支援しています。  

詳しくは [公式サイト](https://mosaica.co.jp/) までお気軽にご相談ください。
公式サイト： https://mosaica.co.jp/