may the VBA be with you

Excel VBAとか業務自動化とか

GASで数値文字参照を読めるようにする練習

とある場所で「とある配送業者の配送状況を追跡番号から取得してgoogleシートに表示する的なシステム」の公開依頼が予算1,000円~3,000円で発注されてて、提案してる人がいて「すげーな」と思いました。

f:id:vba-belle-equipe:20210505160800j:plain
やったぜ

自分ではその値段で作る気はしないものの気になって調べて、がんばって取得した配送状況が

配達完了

的な数値文字参照
特殊な訓練を受けていない自分には読めないため、GASでデコードできるようにしてみました。

function test(){
  let str = '配達完了';
  console.log(numRefToString(str));  //配達完了
}

//数値文字参照を通常文字列に
function numRefToString(str){  
  let re = str.match(/&#[0-9a-f]+;/g);
  let len = re.length;

  let result = '';
  for (let i = 0; i < len; i++)
  {
    console.log(re[i]);
    let tmp = re[i].replace('&#', '').replace(';','');
    tmp = String.fromCharCode(tmp);
    result += tmp;
  }
  return result;
}

説明

正規表現でマッチしたものを全て配列にいれて、数字だけにして、あとは「String.fromCharCode」にお任せというだけのものです。
ダメなケースがあったらごめんなさい。