4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プリザンター(Pleasanter)でのサーバスクリプトの苦労と解決策

Posted at

プリザンター(Pleasanter)を使用している際に、サーバスクリプトで苦労した部分のコードをコメントつきで公開します(自分用備忘録です)。特に、JSONデータレイアウト: ViewのColumnFilterHashでClassを設定する際には配列で指定する必要であることサイトIDの取得方法条件に合致するレコード数のカウント(items.Count)、**テーブルの更新(items.Update。サーバスクリプトが係れているテーブル以外も作成・更新可能)**に関する部分でつまずいたポイントを詳しく解説します。

完成したサーバスクリプト

(function () {
  //  let 貸出案件ID = model.ClassC; として定義するとString型として認識されるため不可
  let 貸出案件ID = [model.ClassC]; // viewのColumnFilterHashのClassC設定時に配列が必要なた配列として定義 
  
  if (!貸出案件ID || 貸出案件ID.length === 0) {    
      return;
  }
  
  // 貸出明細テーブルのサイトIDを定義
  let siteId = model.SiteId; // Number型
  
  // 貸出明細テーブルの「item.Count(siteId, view)」による検索条件を指定
  let view = {
      "View": {
          "ColumnFilterHash": {
              "CheckA": true, // 「貸出中?」カラム。貸出中の場合はTrue
              
              // 貸出案件IDはStringでなくarrayでなければいけない。
              // 貸出案件IDをarrayにしても"ClassC": 貸出案件IDとするだけではエラーが出る。
              // 以下が正解
              "ClassC": JSON.stringify(貸出案件ID) // 配列をJSON文字列に変換
          },
          
          // 完全一致検索のための記載
          "ColumnFilterSearchTypes": {
              "ClassC": "ExactMatch"
          }
      }
  };
  context.Log("view: " + view);

  // items.Countで条件に合致するレコードの件数を集計できる
  let 貸出明細未返却件数 = items.Count(siteId, JSON.stringify(view));
  // 貸出案件テーブルのCheckA(「返却済?」カラム)の更新
  if (貸出明細未返却件数 == 0) {
    let 貸出案件返却済更新 = {
      CheckHash: {
        CheckA: true
      }
    };
    items.Update(貸出案件ID, JSON.stringify(貸出案件返却済更新));
    context.Log("すべて返却されています");
  } else if (貸出明細未返却件数 != 0) {
    let 貸出案件返却済更新 = {
      CheckHash: {
        CheckA: false
      }
    };

        // items.Updateの第1引数で他のサイトIDを指定すると、他のサイトID(テーブル)のレコードも作成・更新可能
    items.Update(貸出案件ID, JSON.stringify(貸出案件返却済更新));
    context.Log("あと" + 貸出明細未返却件数 + "件の明細分が未返却です");
  } else {
    return false;
  }
})();
4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?