はじめまして、MuraTatsuと申します。
表題の件でちょっと沼にはまっておりまして、どなた様かおわかりになられるようでしたらお助け頂きたくトピックあげさせて頂きました。
やりたいこと
- スマレジという外部のウェブサービスが提供するAPIの送信機能を使って送られたデータを、bubbleで作ったアプリケーション内で保存したいのですが、送ってくるデータがUnicodeであるためそれをアンエスケープして読める文字列にしたものを保存したいと思っています。
↓受け取るデータはこんな感じです↓
現在の状態・発生している問題
- ワークフローの中で、受け取ったデータから保存したい値の部分を切り出して、Server scripアクションの中にネットに見つけた変換コードを貼り付けて動かしてみました。
変換しようとする元データが
-
「全角文字だけ」
-
「全角文字+半角カナだけ」
-
「半角英数だけ」
で構成されている文字列の時はうまく変換出来ていますが、 -
「全角文字と半角英数」が混じった文字列
を変換させると、全角文字だけを結果として返してきます(例:"2023年モデル"という文字列は"年モデル"にされてしまう)。
実現したいこと
前述の例で言えば、受け取った文字列
- 2023\u5e74\u30e2\u30c7\u30eb
を変換して
- 2023年モデル
という文字列で保存したいと思っておりますが、正規表現の指定の仕方が悪いのかそこにたどり着けません。server scriptアクションに貼り付けたソースは以下の通りです。
-----8<-----(ここから)-----8<-----
var unicodeUnescape = function(str) {
var result = ‘’, strs = str.match(/\u.{4}/ig);
if (!strs) return '';
for (var i = 0, len = strs.length; i < len; i++) {
result += String.fromCharCode(strs[i].replace('\\u', '0x'));
}
return result;
};
var result = unicodeUnescape(data);
result;
-----8<-----(ここまで)-----8<-----
ここをこう変えれば望んでいる変換結果を得られるよ!というのがおわかりになられる方いらっしゃいましたら、教えて頂けますでしょうか?どうぞよろしくお願い致します。