items.GetSiteByTitle
概要¶
itemsオブジェクトの「GetSiteByTitleメソッド」です。指定したタイトルをもとにサイトの情報を取得します。
構文¶
パラメータ¶
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| title | object | ○ | サイトのタイトルを指定 |
戻り値¶
該当するサイトの「apiModel 」の配列を返却します。
使用例¶
以下の例では、タイトルが "部署マスタ" のサイト情報を取得してログに出力します。
const sites = Array.from(items.GetSiteByTitle('部署マスタ'));
if (sites.length) {
sites.forEach(site => {
context.Log(site.SiteId);
context.Log(site.Title);
context.Log(site.ReferenceType);
})
}
サンプルコード¶
1. 案件ごとのテーブルを作るとき、同じ名前のテーブルがあれば登録を止める
「案件管理」テーブルに案件を登録するとき、案件名と同じ名前のテーブルを「案件フォルダ」の下に作ります。作る前にitems.GetSiteByTitleで同じ名前のサイトを探し、案件フォルダにすでにあれば、エラーメッセージを表示して登録を止めます。作ったテーブルのサイトIDは、案件のレコードに残します。
実務での使いどころ¶
案件やプロジェクトごとにテーブルを作る運用で、同じ名前のテーブルが重複して作られるのを防げます。テーブル(サイト)のタイトルは、標準の設定では重複が禁止されないため、登録の操作を繰り返したり、同じ案件名で登録したりすると、同じ名前のテーブルが複数でき、データが分かれてしまいます。items.GetSiteByTitleはフォルダを問わず探すため、作成先のフォルダにあるものに絞って判定し、別の部署のフォルダにある同じ名前のテーブルは重複として扱いません。
事前準備¶
1:案件ごとのテーブルを作るフォルダを作成し、「テーブルの管理 > 全般」でサイト名に「案件フォルダ」を設定してください。
2:「案件管理」テーブル(期限付きテーブル)に以下の項目を有効化してください。
| 項目コード | 内容 |
|---|---|
| タイトル(Title) | 案件名。同じ名前のテーブルを作る |
| 数値A(NumA) | 作成したテーブルのサイトID |
3:スクリプトを登録します。
3-1:「案件管理」テーブルの「テーブルの管理 > サーバスクリプト」タブで「新規作成」を選択する。
3-2:タイトル: 任意の名前(例:createProjectTableWithoutDuplicate)
3-3:スクリプト: 下記サンプルコードを貼り付け
3-4:条件: 「作成前」にチェック
JavaScript¶
// 案件ごとのテーブルを作るフォルダの「サイト名」(テーブルの管理 > 全般 で設定する)
const PROJECT_FOLDER_NAME = '案件フォルダ';
const LOG_TAG = '[createProjectTableWithoutDuplicate]';
// 案件名と同じ名前のテーブルを、案件フォルダの下に作る(同じ名前のテーブルがあれば登録を止める)
function createProjectTable() {
const title = (model.Title || '').trim();
if (!title) {
return;
}
const folder = items.GetClosestSite(PROJECT_FOLDER_NAME);
if (!folder) {
context.Error(`サイト名「${PROJECT_FOLDER_NAME}」のフォルダが見つかりません。`);
return;
}
// GetSiteByTitle はタイトルが完全一致するサイトを、フォルダを問わず配列で返す。
// 作成先のフォルダの直下にあるものに絞って、重複を判定する
const sameTitle = Array.from(items.GetSiteByTitle(title))
.filter((site) => site.ParentId === folder.SiteId);
if (sameTitle.length > 0) {
const siteIds = sameTitle.map((site) => site.SiteId).join('、');
logs.LogUserError(`${LOG_TAG} 「${title}」は作成済み(サイトID:${siteIds})`, 'createProjectTable');
context.Error(`「${title}」のテーブルは既にあります(サイトID:${siteIds})。案件名を変えてください。`);
return;
}
const site = items.NewSite('Issues');
site.Title = title;
items.Create(folder.SiteId, site);
// 作ったテーブルのサイトIDを、案件のレコードに残す
model.NumA = site.SiteId;
logs.LogInfo(`${LOG_TAG} 「${title}」のテーブルを作成しました(サイトID:${site.SiteId})`, 'createProjectTable');
}
createProjectTable();
注記¶
items.GetSiteByTitleはタイトルの完全一致で探します。全角・半角の違いなどの表記ゆれは、同じ名前と見なしません(前後の空白は除いて判定します)。- 戻り値の各要素には
SiteId・ParentId・Titleが入ります。 - 登録を止めた場合、テーブルは作成されません。
