🐴
GAS:スクリプトプロパティはエスケープ文字を直接解釈しない
GCPのサービスアカウントで認証するときの処理を作ってるときに15分くらいハマったのでmemoしておく。
問題
Google Apps Scriptのプロパティサービスで保存された文字列はエスケープ文字を直接解釈しない。
そのまま取り出すと"\n"が改行としてではなく、リテラルの文字列として扱われてしまう。
どゆこと?
こういうこと。
▼変数に直接文字列を入れた場合
const regular = 'hoge\nfuga'
Console.log(regular)
/* 出力結果
hoge
fuga
*/
▼スクリプトプロパティから文字列を取得した場合
const irregular = PropertiesService.getScriptProperties().getProperty('TEXT'); // 'hoge\nfuga'
Console.log(regular)
/* 出力結果
hoge\nfuga
*/
解決策
String.prototype.replace()で置き換える。
下記コードはプロパティから取得した文字列 formattedIrregular
中の全ての "\n"(バックスラッシュとn)を、実際の改行コード '\n' に置き換えている。
const formattedIrregular = PropertiesService.getScriptProperties().getProperty('TEXT'); // 'hoge\nfuga'
const formattedIrregular = irregular.replace(/\\n/g, '\n');
console.log(formattedIrregular);
/* 出力結果
hoge
fuga
*/
ワンライナーでやるなら
const formattedIrregular = PropertiesService.getScriptProperties().getProperty('TEXT').replace(/\\n/g, '\n');
以上
Discussion