# キーバリューストア（KVS）アクション

## **概要**

キーバリューストア（KVS）は、キーとバリューを組み合わせた簡易的なデータストアです。キーバリューストアを使うことで、ワークフローの実行が終了した後でもデータを保持することが可能です。

## **スコープ**

<figure><img src="https://files.readme.io/95e8be5-image.png" alt=""><figcaption></figcaption></figure>

### **このワークフロー**

* このワークフロー（ソリューション）の中でのみデータが共有されます。
* ソリューションをアンインストールした時点でデータは再利用できなくなります。\
  （再度インストールしたとしても、以前インストールした際のデータは参照できません）
* 例1：ソリューション内で処理したデータ件数をカウントアップし、累積データ件数を記録
* 例2：自社プロダクトのIDを「キー」に、SalesforceのIDを「値」に設定し、データのマッピングデータを記録

### **すべてのワークフロー**

* このワークフローだけでなく、KVSを適用している他のワークフロー（ソリューション）にもデータが共有されます。
* ソリューションをアンインストールしてもデータは再利用できます。\
  （再度インストールした場合でも、以前インストールした際のKVSのデータは参照可能です）
* 例：
  * Salesforce連携のソリューションAにて、\
    自社プロダクトのIDを「キー」に、SalesforceのIDを「値」に設定し、データのマッピングデータを記録
  * その後、HubSpot連携のソリューションBにて、\
    Salesforce連携のマッピングデータを参照して処理を行う

{% hint style="success" %}

### ヒント

いずれの場合でも、エンドユーザー（またはエンドユーザーチーム）を超えてKVSの情報が共有されることはありません。
{% endhint %}

{% hint style="danger" %}

### テスト時の注意

テストモードではソリューションがもつすべてのデータは毎回リセットされるため、KVSの厳密な挙動を確認することはできません。
{% endhint %}

## **データを保存**

指定したキーにデータを保存します。

<figure><img src="https://files.readme.io/b224c15-Screen_Shot_2023-03-20_at_6.57.46_PM.png" alt="838" width="563"><figcaption><p><code>sample</code> というキーに対して <code>hello world</code> という文字列を保存</p></figcaption></figure>

{% hint style="success" %}

### ヒント

保存可能サイズの上限は各キーごとの制限です。KVS全体に対する制限ではありません。
{% endhint %}

## **データを取得**

指定したキーのデータを取得します。

<figure><img src="https://files.readme.io/5501f8f-Screen_Shot_2023-03-20_at_6.58.37_PM.png" alt="835" width="563"><figcaption><p><code>データを保存</code> した後のステップで <code>sample</code> キーに入っているデータを取得</p></figcaption></figure>

<figure><img src="https://files.readme.io/c116ca4-Screen_Shot_2023-03-20_at_6.58.50_PM.png" alt="390"><figcaption><p><code>データを保存</code> で <code>sample</code> に <code>hello world</code> を保存していたので、取得が成功</p></figcaption></figure>

## **キーを削除**

指定したキーのデータを削除します。

<figure><img src="https://files.readme.io/5b47b2b-Screen_Shot_2023-03-20_at_7.00.34_PM.png" alt="358" width="563"><figcaption><p><code>sample</code> を削除した後、<code>データを取得</code> してみた例。valueがnullになり、削除されていることが確認できる</p></figcaption></figure>

## **リストデータを保存**

指定したキーにリストデータを保存します。

<figure><img src="https://files.readme.io/645a193-Screen_Shot_2023-03-20_at_7.04.23_PM.png" alt="831" width="563"><figcaption><p><code>sample_list</code> キーに <code>["hello", "world"]</code> というデータを保存</p></figcaption></figure>

## **リストデータの存在を確認**

指定したキーのリストデータの中に、指定したデータが含まれているかを確認します。

<figure><img src="https://files.readme.io/f239806-Screen_Shot_2023-03-20_at_7.05.31_PM.png" alt="835" width="563"><figcaption><p><code>sample_list</code> キーに保存されているリストデータに、<code>hello</code> が含まれているかどうかを確認</p></figcaption></figure>

<figure><img src="https://files.readme.io/6be43a6-Screen_Shot_2023-03-20_at_7.06.38_PM.png" alt="364"><figcaption><p>値が含まれているので<code>true</code></p></figcaption></figure>

{% hint style="success" %}

### リストデータを取得するには？

2023年3月時点ではリストデータを取得するアクションは提供していません。変数更新アクションで代替できる場合がありますので、[参考](/solution-editor/actions/data-transform/variable.md#wo-1)にしてください。
{% endhint %}

## **JSON形式で保存するには**

データの入力モードを[formula](/solution-editor/common-specs/formula.md)に変更し、`json_dumps`関数を使うとJSON文字列として保存できます。

<figure><img src="https://files.readme.io/47f4584-image.png" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-embed.anyflow.jp/solution-editor/actions/data-store/kvs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
