【GAS】文字列にBOMを追加する【AI泣かせ】
こんにちは、フリーランスエンジニアの太田雅昭です。
BOM
BOMは、Excel対応で必要になります。一方でBOMがあるとエラーになる環境もあるようで、この辺りMicrosoftにはどうにかして欲しいものです。
GASでのバイト周り
GASでは、バイト操作が独特です。atobやbtoaが使えない、エンコーダーが使えない、といった制約の代わりにUtilitiesクラスが提供されています。
ただ情報があまりに少なくて苦労します。AIもなかなか正解を出せません。
GASで文字列にBOMを追加する
最終的に、以下で実現できました。
const BOM = [239, 187, 191];
const dataBytes = Utilities.newBlob(data).getBytes();
const finalBytes = [...BOM, ...dataBytes];
const base64 = Utilities.base64Encode(finalBytes);
かなり苦労したのですが、最終的にこれだけ。。。?これは、なかなかのやるせなさを感じますね。ちーん、ぽくぽくぽく。