1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プリザンターのサーバスクリプトで複数値を取得するルックアップを実現する

Posted at

はじめに

今回の記事では、プリザンターのルックアップ機能で実現できない「複数値」を取得する機能をサーバスクリプトで実現します。今回のお問い合わせでは、プリザンター標準機能である「ルックアップ機能」に関するものでした。プリザンターのルックアップ機能では、条件に合致した値を一つだけ取得します。今回のお問い合わせでは、複数値を取得するルックアップ機能をサーバスクリプトで実現できるかどうかというお問い合わせでした。下記スクリプトで実現できましたので共有させていただきます。

サーバスクリプト

try {
    // 分類Bに表示する要素
    let lookupElement;
    // リンク先のサイトID
    let siteId = XXXX;
    // 分類Aに何かしら表示されていたら
    if (!(model.ClassA === '[]')) {
        let array = new Array();
        // フィルタ条件を設定
        let data = {
            View: {
                ColumnFilterHash: {
                    // 分類Aの表示内容をもとにリンク先のレコードを絞り込み
                    ResultId: model.ClassA
                }
            }
        }
        // 絞り込み結果をもとにレコード情報を取得
        let results = items.Get(siteId, JSON.stringify(data));
        // 絞り込んだリンク先レコードごとに分類Bを取得
        for (let result of results) {
            // 配列に要素を設定
            array.push(result.ClassB);
        }
        // 配列を「,」区切りの文字列に設定
        lookupElement = array.join(',')
        // 要素を分類Bに設定
        model.ClassB = lookupElement;
    } else {
        model.ClassB = '';
    }
} catch (ex) {
    context.Log(ex.stack);
}

リンク先のテーブルからレコードIDとClassAに入力された値が合致するレコード情報を取得します。for文でレコード情報数分処理を反復し、リンク先テーブルから取得したレコードのClassBの値を配列「array」に設定していきます。joinによって、配列「array」に設定された要素を「,」(カンマ)区切りで文字列に変換します。「,」区切りの文字列をClassBに設定します。

さいごに

今までは「,」区切りの文字列を作成する際は下記のコードのようにif文で作っていました。↓上記サーバスクリプトのfor分内の処理です。

    // 絞り込んだリンク先レコードごとに分類Bを取得
    for (let result of results) {
        // 要素がない場合
        if (!lookupElement) {
            // リンク先レコードの分類Bの値を取得
            lookupElement = result.ClassB;
            // 要素がある場合
        } else {
            // リンク先レコードの分類Bの値をカンマ区切りで取得
            lookupElement = lookupElement + ',' + result.ClassB
        }
    }

このコードはよくないと指摘を受けましたため、修正したコードが上記のサーバスクリプトになります。動作も確認済みです。
最近、SI案件やサポートWEBの対応を実施するにつれてプリザンターにはできないことはないのではないかと思っています。そんなプリザンターを作ってしまう社長に対してはとても尊敬しています。それだけではなく、社長は私の上司でもあるのですが、理解力のない私にも私が理解できるまで説明してくれます。指摘してくださる際も私の意見を聞いてくれて、優しく時に厳しく接してくれる社長には感謝しかないです。インプリムに入社して本当に良かったと思っています。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?