開発者向け機能:サーバスクリプト:items.Upsert
## 概要
指定したサイトでキー項目に該当するレコードが存在する場合は更新し、存在しない場合は新規作成します。
## 制限事項
1. 作成・更新したレコードのIDを、items.Upsertの戻り値や、items.Upsertで使用する変数からは取得できません。
## 構文
```
items.Upsert(siteId, json)
```
## パラメータ
|パラメータ|型|必須|説明|
|:----------|:----------|:---:|:---------------------------|
|siteId|object|○|サイトIDを指定|
|json|string|○|JSON文字列を指定|
#### 指定するキー項目について
指定したキー項目をもとにAPIによるレコード作成・更新(upsert)を行います。キー項目の指定は以下のパラメータで指定します。
|プロパティ名|データ型|説明|
|:--|:--|:--|
|Keys|配列(文字列)|キーとなる項目を指定。複数の項目を指定可能です。|
## 戻り値
レコードを更新または、新規作成ができた場合は true、できなかった場合は false を返却します。
## 使用例①
下記の例では、キー項目を分類Aにして、サイトID 123 のテーブルに該当するレコード(分類Aが"Ubuntu")が存在する場合は更新し、存在しない場合は新規作成します。
レコードの更新または、新規作成する際の情報は以下の通りです。
・タイトル:プリザンターのインストールについて
・状況:実施中(200)
・分類A:Ubuntu
・分類B:PostgreSQL
##### JavaScript
```
let data = {
Keys: ["ClassA"],
Title: "プリザンターのインストールについて",
Status: 200,
ClassHash: {
ClassA: "Ubuntu",
ClassB: "PostgreSQL"
}
};
items.Upsert(123, JSON.stringify(data));
```
## 使用例②
下記の例ではキー項目をタイトルにして、サイトID 123 の該当するレコード(タイトルが"Sample")が存在する場合は更新し、存在しない場合は新規作成します。
この際、日付Aに入力されている値を日付Cへ転記します。
__サーバースクリプトでは日付項目はUTCとして扱われるため、適宜変換してください。__
##### JavaScript
```
let date = model.DateA;
let jstDate = date.toLocaleString("ja-JP",{ timeZone: "JST" });
let data = {
Keys: ["Title"],
Title: "Sample",
DateHash: {
DateC: jstDate
}
};
items.Upsert(123, JSON.stringify(data));
```
## 関連情報
・[テーブルの管理:サーバスクリプト](/manual/table-management-server-script)
・[itemsオブジェクト](/manual/server-script-items)
・[開発者向け機能:API:テーブル操作:レコード作成・更新](/manual/api-record-upsert)