コンテンツにスキップ
「プリザンター入門」発売中!

開発者向け機能:サーバスクリプト:items.GetClosestSite

概要

itemsオブジェクトの「GetClosestSiteメソッド」です。サイト名検索で該当サイトに最も近いサイト情報を取得します。

前提条件

  1. 本機能はサイトの「サイト名」を検索します。あらかじめサイト名を設定してください。サイトのタイトルではありませんので注意ください。
    サイトの「サイト名」を設定する箇所

構文

items.GetClosestSite(name,id)

パラメータ

パラメータ 必須 説明
name string サイト名を指定
id int 検索開始サイトIDを指定(省略時:サーバスクリプトが格納されたサイトID)

戻り値

該当するサイトのapiModelを返却します。
見つからなかった場合またはアクセス権が無い場合はnullを返却します。

使用例

以下の例では、サイト名が "WBS" のサイト情報を取得します。

const site = items.GetClosestSite('WBS');
if (site) {
    context.Log(site.SiteId);
    context.Log(site.Title);
    context.Log(site.ReferenceType);
}

使用例①

以下の例では、サーバスクリプトが格納されたサイトからサイト名”WBS”で検索したサイト情報を取得します。

const site = items.GetClosestSite('WBS');

使用例②

以下の例では、サイトIDが1234のサイトからサイト名”WBS”で検索したサイト情報を取得します。
バックグラウンドサーバスクリプトではこちらを使用します。

const site = items.GetClosestSite('WBS',1234);

サンプルコード

1. サイトIDをキャッシュし処理効率化

サイトIDをキャッシュ、2回目以降使用する際はキャッシュから取得することで、処理効率化を図ります。

// サイトIDキャッシュ
const _siteIdCache = new Map();
// サイト名からSiteIdを取得(キャッシュ)
function getSiteIdOrNull(siteName) {
    if (_siteIdCache.has(siteName)) return _siteIdCache.get(siteName);
    const site = items.GetClosestSite(siteName);
    if (!site || !site.SiteId) {
        logs.LogUserError(
            `${siteName} サイト情報取得失敗`,
            getSiteIdOrNull.name,
        );
        return null;
    }
    _siteIdCache.set(siteName, site.SiteId);
    return site.SiteId;
}
const siteId = getSiteIdOrNull('案件管理');
if (siteId) {
    logs.LogInfo(`案件管理のSiteId: ${siteId}`);
}

補足

「開発者向け機能:サーバスクリプト:items.GetSiteByName」との違いは、items.GetSiteByNameメソッドは該当サイト名を持つ全てのサイトを返しますが、item.GetClosestSiteメソッドは検索開始サイトから最近傍の該当サイト名を持つサイトを1つ返します。

関連情報