【GAS】Blobのバイナリデータを文字列に変換する方法|getDataAsStringの使い方を実例で解説(base64をデコードして文字列にする)

AppScript appscript GAS-prograshi(プロぐらし)-kv AppScript
記事内に広告が含まれていることがあります。

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!


タイトルとURLをコピーしました