🐴

GAS:スクリプトプロパティはエスケープ文字を直接解釈しない

2023/07/21に公開

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