下記のようなメールを必要箇所抽出し、正規表現に直そうと思っているのですが、抽出方法がわからず困っております。
抽出したい内容としては『[]』中の商品型番と商品型番以降から次の商品型番の一つ前の行を削除したご注文内容の詳細、それに対して注文個数に応じて記入を繰り返すといったものです。
自分では注文されたものが1つだった場合しか思いつかず別商品を注文されたときの処理の方法が思い浮かびません。
引き続き方法を考えますが、当方プログラミングは初めて日が浅く、知らない関数などもあるため解決策が見出せずにいます。ある程度規則性のある処理内容と思っていますためプログラムで動かせるものとは思います。
何卒お力をお貸しください。
自分の思い浮かぶ限りの解決方法
文字列内の『[』の文字の数を数え1つだった場合と複数だった場合で処理を分ける
↓
1つだった場合『[]』の間の文字を取得し商品型番を取り var code とする
___________↓
___________『]』から『=』までの文字を取得し var details とする
___________↓
___________『円 』から『個』までの文字をとり個数に合わせて var code と var detailsを繰り返す
___________↓
___________メールタイトルを var code とする
↓
複数だった場合『[』から同一行に存在しない『[』までを取る 仮に var a とする
↓
何らかの方法で var a の下から2行を削除し a.replase("]", "") する var aaとする
↓
文字列内において var a の一つ上の行から個数を取得し、個数に合わせてvar a を繰り返す
↓
var aaの1行目を取得し商品型番をとる var code1とする
↓
上記を『==』が来るまで繰り返す
メール 内容
ーーーーーーーーーーーーー
商品名A 10,000円 1個 10,000円
[商品型番A]
色:黒
サイズ:22.5
素材:エナメル
オプション:ーー
商品名B 5,000円 2個 5,000円
[商品型番B]
色:黒
サイズ:22
素材:革
=============
正規表現後
メールタイトル:商品型番A・商品型番B・商品型番B
商品型番A
色:黒
サイズ:22.5
素材:エナメル
オプション:ーー
商品型番B
色:黒
サイズ:22
素材:革
商品型番B
色:黒
サイズ:22
素材:革
現在書けている分のコード
GoogleAppsScript
1function myFunction() { 2 var text = (function() {/* 3ーーーーーーーーーーーーー 4商品名A 10,000円 1個 10,000円 5[商品型番A] 6色:黒 7サイズ:22.5 8素材:エナメル 9オプション:ーー 10 11商品名B 5,000円 2個 5,000円 12[商品型番B] 13色:黒 14サイズ:22 15素材:革 16============= 17*/}).toString().match(//*\n*([^]*)*//)[1]; 18 19 20var count = (text.match(/[/g) || []).length; 21console.log(count); 22 23 24 if(count = 1){ 25 const result = text.match(/[(.*)]/); 26 if (result != null) { 27 var code =result[1] 28} 29 30 var details = new RegExp(']'+'[\s\S]*?'+'='); 31 var Details = text.match(details)[0].replace(']', '').replace('=', ''); 32 33 34 35} 36
回答2件
あなたの回答
tips
プレビュー