discord+googleフォームで「価格」対応
前提
依頼
問い合わせに「価格」がはいるとのこと。
オーケー、対応しようじゃないか
入力を制御
まずはグーグルフォーム。
「カンマがあってもOKとする」ので、既存の「整数」チェックは使えない。
ということで、独自正規表現…なんだけど。
「カンマがあってもOK」ということは「カンマがなくてもOK」な正規表現なんだけど…そんな都合のいい表記ある?
https://qiita.com/aki4003/items/d9787cbb3c392fe2aeb3
あった…!!!!
と思ったけど、これは「3桁区切り」とかはダメだったorz
ということで、あれこれ探したり chat-gptに相談したりで、以下の正規表現になりました。
正規表現で、「価格」となっているかチェック
^[1-9][0-9]{0,2}(,?[0-9]{3})*$
数字もしくは,のみを入力できる。
ただし、先頭に0は入力できない。
全体の桁数は、3桁以上とする。
なお、「,」は、末尾から3桁ごとの位置にのみ挿入できる
「,」はあってもなくてもいい
出力を制御
つづいてGAS。
GASで整形しているところに、こんなコマンドかませればいいっしょ
function addComma(str) {
// 数値だけを抜き出して結合
var num = str.match(/\d+/g).join("");
// カンマ区切り追加
return parseInt(num).toLocaleString();
}
…と思ったら、エラー。
[TypeError: str.match is not a function]
…おや?
すでに数値扱いになってる???
でも今後、文字列でくるかもしれないしなぁ。。。
chatgptに相談して、以下の変換を追加。
入力値をカンマ区切りにして返すメソッド
function addComma(str) {
// 明示的に文字列に変換
if (typeof str !== 'string'){
str = String(str)
}
var num = str.match(/\d+/g).join("");
return parseInt(num).toLocaleString();
}
結論
達成!
カンマ区切りだと見やすいよね。
カンマ有無を判断して、なければ追加する処理をどうしようかな…とか迷ってたけど、便利なメソッドがあるもんだ。
この記事が気に入ったらサポートをしてみませんか?