開発者向け機能:スクリプト:$p.apiUpdate
## 概要
AjaxのPOSTリクエストにより、レコードおよびWikiを更新します。
## 使い方
##### JavaScript
```
$p.apiUpdate({
id: <レコードID>,
data: {
<更新データ>
},
done: <任意の処理>,
fail: <任意の処理>,
always: <任意の処理>
});
```
## 各パラメータの説明
|パラメータ名|説明|
|:--|:--|
|レコードID|操作対象のレコードID
|更新データ|POSTするjsonデータ|
|任意の処理|API通信成功(done:必須)、失敗時(fail:任意)、完了時(always:任意)の処理|
## 記述方法
##### JavaScript
```
$p.apiUpdate({
id: 123,
data: {
ApiVersion: 1.1,
ClassHash: {
ClassA: 'テストデータ'
}
},
done: function (data) {
console.log(data);
},
fail: function (data) {
console.log(data);
},
always: function (data) {
console.log(data);
}
});
```
## サンプルコード
##### コード内の【 ... 】 は適宜修正してください。
<details>
<summary>1. レコードIDを直接指定し更新</summary>
レコードIDを直接指定し更新します。
##### JavaScript
```
// 更新対象のレコードID
const recordId = 【レコードID】;
$p.apiUpdate({
id: recordId,
data: {
ApiVersion: 1.1,
Title: 'タイトル変更',
ClassHash: { ClassA: '障害' },
},
done: function (data) {
console.log('更新成功');
},
fail: function (data) {
console.log('更新失敗');
},
});
```
##### 実行結果
```
更新成功
```
</details>
<details>
<summary>2. 複数のレコードを更新</summary>
条件に該当するレコードを取得し、該当するレコード複数件を更新します。
##### JavaScript
```
// 更新対象を絞り込むサイトID
const siteId = 【サイトID】;
$p.apiGet({
id: siteId,
data: {
View: {
ColumnFilterHash: {
Status: `["100"]`, // 状況が未着手(100)のレコードを抽出
},
},
},
done: function (data) {
const records = data.Response.Data;
records.forEach(function (item) {
// 結果テーブルは ResultId、課題テーブルは IssueId で参照
const recordId = item.ResultId || item.IssueId;
$p.apiUpdate({
id: recordId,
data: {
Status: '910', // 状況を保留(910)に更新
},
done: function (updated) {
console.log(`更新成功:Id=${recordId}`);
},
fail: function (updated) {
console.log(`更新失敗:Id=${recordId}`);
},
});
});
},
fail: function (data) {
console.log('レコード取得に失敗しました。');
},
});
```
##### 実行結果
```
更新成功:Id=9999
更新成功:Id=9999
更新成功:Id=9999
```
</details>
<details>
<summary>3. 添付ファイルを削除</summary>
特定のレコードに添付されている添付ファイルをすべて削除します。
##### JavaScript
```
// 処理対象のレコードID
const recordId = 【レコードID】;
$p.apiGet({
id: recordId,
data: { ApiVersion: 1.1 },
done: function (data) {
const records = data.Response.Data;
if (records.length === 0) {
console.log(`レコードが見つかりませんでした: Id=${recordId}`);
return;
}
const record = records[0];
// 添付ファイルの配列を取得(環境により Hash 形式 / フラット形式の両対応)
const attachments =
(record.AttachmentsHash && record.AttachmentsHash.AttachmentsA) ||
record.AttachmentsA ||
[];
if (attachments.length === 0) {
console.log(`添付ファイルなしのため更新不要: Id=${recordId}`);
return;
}
$p.apiUpdate({
id: recordId,
data: {
ApiVersion: 1.1,
AttachmentsHash: {
// すべての添付の Guid を指定し Deleted:1 にして削除
AttachmentsA: attachments.map(function (attachment) {
return { Guid: attachment.Guid, Deleted: 1 };
}),
},
},
done: function (updated) {
console.log(
`更新成功: Id=${recordId}, 削除対象=${attachments.length}件`,
);
},
fail: function (updated) {
console.log(`更新失敗: Id=${recordId}`);
},
});
},
fail: function (data) {
console.log('レコード取得に失敗しました。');
},
});
```
##### 実行結果
```
更新成功: Id=9999, 削除対象=3件
```
</details>
<details>
<summary>4. レコードのアクセス制御を設定</summary>
特定のレコードにレコードのアクセス制御を設定します。
##### JavaScript
```
// 処理対象のレコードID
const recordId = 【レコードID】;
$p.apiUpdate({
id: recordId,
data: {
ApiVersion: 1.1,
// グループID=1 に対してすべての権限(511)をレコードのアクセス制御に付与
RecordPermissions: ['Group,1,511'],
},
done: function (data) {
console.log(`更新成功: Id=${recordId}`);
},
fail: function (data) {
console.log(`更新失敗: Id=${recordId}`);
},
});
```
##### 実行結果
```
更新成功:Id=9999
```
</details>



