Google App Script(GAS)ではBlobオブジェクトを実によく使います。
Blobオブジェクトに格納されたデータは器械にしかわからないデータです。例えば、Blobオブジェクトに対してgetBytesメソッドを使えばデータを取得することができます。
ですが、そのデータを元の文字列に戻すにはどうすればいいのでしょうか?
そんなときはgetDataAsStringメソッドを使います。ここではgetDataAsStringの使い方を実例で解説しています。
getDataAsString|Blobオブジェクトを文字列に変換する
Blobオブジェクトをデータで表すと[ 71, 111, 111, 100, 32, 77, 111, 114, 110, 105, 110, 103, 33 ]
のようになります。
これでは、人間が見ると意味がわかりません。これを文字列に戻すにはgetDataAsSrtingメソッドを使います。
getDataAsString([charset])
引数でcharset(文字コード)を指定できます。省略したときはUTF-8となります。
(参考)AppScrips > Class Blob > getDataAsString
getDataAsStringの実例1
[ 71, 111, 111, 100, 32, 77, 111, 114, 110, 105, 110, 103, 33 ]というBlob形式のデータを文字列に変換してみます。
getDataAsStringはBlobオブジェクトに対してしか使えないため、setBtyesメソッドを使ってデータをBlobオブジェクトに変換します。
この作成したオブジェクトに対してgetDataAsStringを使えば可読な文字列が返ります。
function createBlob(){
let blobData = [ 71, 111, 111, 100, 32, 77, 111, 114, 110, 105, 110, 103, 33 ];
let blob = Utilities.newBlob("").setBytes(blobData);
console.log(blob.getDataAsString());
}
↓ 出力結果
Good Morning!
getDataAsStringの実例2:base64からデコードする
getDataAsStringの実例として、base64で64進数に変換したデータ「SGVsbG8h」を可読な通常の文字列に変換することもできます。
まずは、base64Decodeメソッドを使ってbase64データをBlobデータに変換した後、setBytesメソッドを使ってBlobオブジェクトを生成します。
最後に、生成したBlobオブジェクトに対してgetDataAsStringを実行すれば文字列への変換は完成です。
function decodeBase64(){
let base64Data = "SGVsbG8h";
let blobBinary = Utilities.base64Decode( base64Data );
let blob = Utilities.newBlob("").setBytes(blobBinary);
console.log(blob.getDataAsString());
}
↓ 出力結果
Hello!