> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# APIScript 入門

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

## APIScript

*APIScript* はXML ベースの言語で、カスタム処理ロジックの記述に使用できます。このスクリプトは{siteName} に含まれており、{siteNameShort} を他のビジネスプロセスと統合できる外部プロセスを簡単に呼び出すことができます。{siteNameShort} には、Eメール送信、バッチファイルの実行、データベースの作業などの完全なコードスニペットが含まれています。これらのスニペットを、管理コンソールからお客様のイベントに挿入することができます。

APIScript は、データアクセスおよびプロセッシングのあらゆる側面の管理を可能にするハイレベルなプログラミング言語です。スクリプトを書く際には、キーワード、アトリビュート、アイテム、オペレーション、およびフィードを使います。

* **アトリビュート：** name-value ペアのname 部分（例えば、`attribute="address"`、`value="123 Pleasant Lane"`）。

* **アイテム：** Attribute-value ペアの関連するグループで、インプットとアウトプットを説明します。以下に例を示します。

  ```
  attr="name" value="Bob"
  attr="address" value="123 Pleasant Lane"
  attr="phone" value="123-4567"
  ```

* **オペレーション：** アイテムをインプットとして受け、フィードをアウトプットとして生成するメソッドの一般名。

* **フィード：** アイテムのリスト（例えば、アドレスと電話番号を含む顧客のリストなど）。

* **キーワード：** APIScript 構文（例えば、`api:set`）。

APIScript は多様なキーワードを持ち、次のようなタスクを実行できます：

* イベントのインプットとアウトプットを説明する
* 実行フローを管理するためにIF/ELSE 構文やCASE 構文などのハイレベルなプログラミング構成を使う
* オペレーションを呼び出し、カスタムオペレーションを定義する
* アイテム、オペレーションのインプット、フィード、オペレーションの結果を作成し、変更する
* オペレーション呼び出しの結果得られるフィードを、アイテムの反復により処理する。

## APIScript のアイテム

APIScript では、*アイテム*はオペレーションにインプットを提供するために使用されます。次の例に示すように、`api:set` キーワードを使用してアイテムを作成し、名前を付け、属性値を与えます。

```xml theme={null}
<api:set item="input" attr="mask" value="*.txt" />
```

この行は、`input` という名前のアイテムの、`mask` アトリビュートに`*.txt` という値をセットします。この場合、`input` アイテムはAPIScript の変数の働きをします。

ただし、`input` という名前のアイテムは宣言されていません。その代わりに、初回にアトリビュートをセットしようとすると、そのアイテムが生成されます。上の例では、インプットアイテムが存在していない場合、そのアイテムが生成され、アイテムにmask アトリビュートがセットされます。

### アトリビュート値の選択

アトリビュートを参照するには、構文 *item.attribute*（例えば、`input.mask`）を使用します。あるアトリビュート値をクエリするには、括弧（\[]）でアトリビュート名を囲います。括弧は、文字列リテラルとしてではなく、文字列を評価したいということを示します。

例えば、次のコードスニペットを見てください：

```xml theme={null}
<api:set item="item1" attr="attr1" value="value1"/>
<api:set item="item1" attr="attr2" value="item1.attr1"/>
<api:set item="item1" attr="attr3" value="[item1.attr1]"/>
```

結果は次のとおりです：

* `item1.attr1` は、`value1` のリテラル文字列の値を割り振られます。
* `item1.attr2` は、`item1.attr1` のリテラル文字列の値を割り振られます。
* `item1.attr3` は、`value1` の値を割り振られます。これは、文字列`"[item1.attr1]"` が`item1` の`attr1` アトリビュートとして評価されるからです。

<Note>文字列リテラルにおいて、バックスラッシュ（\）を使って、括弧からエスケープすることができます。</Note>

### デフォルトアイテム

APIScript では、アイテムの内部スタックに暗黙的な無名のアイテム（デフォルトアイテム）があります。次の2つのケースでは、デフォルトアイテムは共通してスクリプトをより短く、簡単に書くために使われています。

* **オペレーションの呼び出し：** *デフォルトアイテム*は、他に指定されたアイテムがない場合に、イベントによって呼び出されたオペレーションにデフォルトで渡されるアイテムです。その結果、`api:set` を使って、デフォルトの名付けられていないアイテムのアトリビュートを書いて、そのアトリビュートがイベント内の次のオペレーションのインプットとして渡されることを意味します。このメソッドは、オペレーションに必要なパラメータを提供する一つの方法です。
* **オペレーションまたはイベントのアウトプットで現在のアイテムを処理する：** オペレーションの結果の変数名を指定しない場合、デフォルトアイテム（オペレーションを起動する`api:call` ブロック内部）は、オペレーションで生成された現在のアイテムを参照します。

APIScript のキーワードのアイテムアトリビュートを単に省略することでデフォルトアイテムを操作する：

```xml theme={null}
<api:set attr="path" value="." />
```

### イベントインプット(\_input)

イベントへのインプットは`_input` アイテムから参照されます。`_input` アイテムには、イベントの`info` ブロックで定義された変数が含まれます。イベント内のデフォルトアイテムから値を読む場合、`_input` から値を読んでいます。同様に、デフォルトアイテムに書き込みたいアトリビュートは、イベントのインプットとともにオペレーションのパラメータとして渡されます。

<Note>`api:call` ブロックの内部では、`_input` アイテムはデフォルトアイテムではありません。アクセスが必要な場合は、名前で参照する必要があります。</Note>

### オペレーションアウトプット(\_out\[n])

`api:call` によって生成されたフィード内の現在のアイテムには、デフォルトのアイテムまたは名前付きの特別なアイテム`_outX` を通じてアクセスします。X は、`api:call` キーワードのネストのレベルを指定します。例えば、単一の`api:call` キーワードの内部の場合、アイテム名は`_out1` です。`api:call` キーワードの3つのネストレベルの内部の場合、名前は`_out3` となります。
