※おことわり
2025年2月時点の情報です。プリザンターのバージョンは 1.4.9.1 です。Google Chrome でやっています。
javascript,html,cssともに初心者です。調べながら、やってみながら、きっとこうすればいいんだ!という感じで書いていますので、間違っている、または効率的な書き方ではない可能性が大いにあります。間違ってるよ!とか、こうしたほうがいいよ!ということがありましたら、コメント等で教えていただけると大変ありがたいです。
1.はじめに
Excel関数好きにはプリザンターの計算式(拡張)が楽しくて、うれしい。で、いろいろ遊んでみてます。
前回は、計算式(拡張)を入力チェックに利用する、をやりました。
【pleasanter】計算式(拡張)活用サンプル②~入力チェックに利用する~
今回は、タイトル項目に設定する文字列を計算式を使って自由自在な形で自動設定したら便利なのでは、と思い、あれこれやってみました。
基本的な使い方等は以下の記事、または公式マニュアルをご参照ください。関数の一覧などは公式マニュアルをご参照ください。
【pleasanter】計算式(規定・拡張)についてまとめてみた
公式マニュアル
テーブルの管理:計算式(既定)
テーブルの管理:計算式(拡張)
計算式(拡張)の関数一覧
計算式(拡張)の関数で使用する論理式
計算式の構文等の詳しい説明は割愛していますので、公式マニュアルをご参照ください。
以下、基本的に「計算式」タブで「計算方法」は[拡張]を利用、「エラーを出力する」はオフ、「表示名を使用しない」はオフ でやっています。
2.タイトルを自由自在に
項目の値を使って分岐したり、一部を取り出したり、日付を思うような書式にしたり、こだわりのこねくり回したタイトルにしたいときとかに計算式(拡張)を使うと自由自在だな、と。
(1)「商品番号」の一部と「受注日時」と「数量」による区分 をくっつけてタイトルにする
「商品番号」と「受注日時」と「数量」を組み合わせてタイトルにしたいと思います。
「商品番号」から左4文字:G123-456-789 → G123
「受注日時」の日付を yyMMdd形式 :2025/2/10 → 250210
「数量」が100未満は「M」、100より大は「L」
これをハイフンでくっつけて G123-250210-M のようにしたい。
計算式(拡張):出力先「タイトル」
使用関数:$CONCAT, $TEXT, $IF, $ISBLANK, $OR
$CONCAT($LEFT(商品番号, 4),"-",$TEXT(受注日時, "yyMMdd"),"-",$IF(数量>100, "L", "M"))
どうも $TEXT は引数が空欄、または正しくなかったりだと、Invalid Parameter とかでたり、 エラーになったりとかしてしまうみたい。なので、エラーなどを出したくない場合は以下 $ISBLANK などをかませると Invalid Parameter を出なくしたり、エラーを回避したりできます。
$IF($OR($ISBLANK(商品番号),$ISBLANK(受注日時),$ISBLANK(数量)),"",$CONCAT($LEFT(商品番号, 4),"-",$TEXT(受注日時, "yyMMdd"),"-",$IF(数量>100, "L", "M")))
編集画面でのイメージ

(2)計算式で作成した項目をほかの項目とくっつけてタイトルにする
以下、上記の計算式の出力先を[分類L]とし、担当者とくっつけてタイトルにした例

タイトルの設定

(3)項目から年月日時分秒を書式を指定して取り出してタイトルにする
「受注日時」から年月日時分秒を yyyyMMddHHmmss 形式で取り出してタイトルにする。
計算式(拡張):出力先「タイトル」
使用関数:$CONCAT, $TEXT, $HOUR, $MID, $SUBSTITUTE
ちょっと紆余曲折ありまして。。。最初はこうしました。
$TEXT(受注日時,"yyyyMMddHHmmss")
時間のところが24時間表記ではなく、12時間表記で出てしまう(19時 → 07時 とでてしまう)。24時間表記でほしかったので、苦肉の策で以下の計算式としました。
$CONCAT($TEXT(受注日時,"yyyyMMdd"),$TEXT($HOUR(受注日時),"00"),$TEXT(受注日時,"mmss"))
もしくは日付値を文字列としてとらえて $MID 関数で抜き出してみる。
$CONCAT($TEXT(受注日時,"yyyyMMdd"),$MID(受注日時,12,2),$TEXT(受注日時,"mmss"))
$TEXT を使わずに、すべて $LEFT や $MID で取り出ししても、$YEAR とかで一つずつ取り出ししてもよいのですが、長くなるので $TEXT とのごちゃまぜ方式でやっています。
それか、文字列としてとらえて置換する。
$SUBSTITUTE($SUBSTITUTE($SUBSTITUTE(受注日時,"/","") ,":","")," ","")
公式マニュアルによると、$TEXT の表示形式は C#で利用可能な書式指定文字列 とあります。
それをみると、HHでいけそうな気がするのですが、いまのところダメみたい。ですが、そのうちHHで行けるようになるのかもしれない。
概要: .NET の数値、日付、列挙、その他の型の書式を設定する方法
カスタム日時形式文字列
どうしたらよいか相談させていただいて、すばやく快くお答えいただきましたプリザンターユーザーグループの方々に感謝いたします。
(4)計算式で作成した項目と自動採番の組み合わせ
(3)で作成した yyyyMMddHHmmss を適当な分類項目等にいったん出力して、タイトルの自動採番機能を使用すると、秒まで重複した場合、ナンバリングをすることができます。

出力イメージ

3.おわりに
タイトルを計算式を使って自由自在な形で自動設定したら便利なのでは、と思い、あれこれやってみました。
ちょっとあんまり「これ!」という斬新な例は思いつかなかったのですが、なにかの参考になれば幸いです。
お読みいただきありがとうございました!
そして、疑問点の相談にのっていただいたプリザンターユーザーグループの皆様、ありがとうございました!
4.参考文献、記事
公式マニュアル
テーブルの管理:計算式(既定)
テーブルの管理:計算式(拡張)
計算式(拡張)の関数一覧
計算式(拡張)の関数で使用する論理式
その他参考サイト
概要: .NET の数値、日付、列挙、その他の型の書式を設定する方法
カスタム日時形式文字列
内部リンク
【pleasanter】計算式(規定・拡張)についてまとめてみた
【pleasanter】計算式(拡張)活用サンプル①~リマインダーの日付として利用する~
【pleasanter】計算式(拡張)活用サンプル②~入力チェックに利用する~
もう読みました?プリザンターの概要、インストール方法から基本操作方法、導入事例、サンプル等、役に立つ情報が満載でしたよ!
コメント