GASにおけるBLOB型(バイナリ・ラージ・オブジェクト型)とは

GAS

Google Apps Script(GAS)に限らず、何かしらのプログラミング言語を扱うとデータ型ごとの規則に従った記述が必要になります。筆者もプログラミングが主業務ではなく学習してこなかったため、各データ型やそれぞれの記述方法の理解に一苦労しました。

String型(文字列)、Integer型(数字)等であればわかりやすいですが、本記事で扱うようなBlob型については全く馴染みがなかったため、自分の整理も兼ねてまとめておきます。

※この記事はこちらのブログを参考にさせていただきました。

Blob型とは

概要

BLOB(Binary Large Object)型とは、ファイル名とMIME型(マイムタイプ、マイム型)で定義されるデータベースで用いられるデータ型の一つで、音声、動画、圧縮ファイル、実行ファイルなどの非構造化データ等、プレーンテキスト以外のバイナリデータを扱う際に用いられます。

バイナリデータとは、0と1のみで表される二進数のデータです。 バイナリデータを記録したファイルはバイナリファイルと呼ばれます。 基本的にはバイナリデータは人には理解できないデータという扱いです。

プログラミング用語解説|Unity高校&ゲームスクールのG学院

MIMEタイプとは「タイプ名/サブタイプ名」の形式の文字列で、WEBサーバーとWEBブラウザの間はこのMIMEタイプを用いてデータの形式を指定しています。

拡張子とMIMEタイプ – とほほのWWW入門

また、MIMEタイプの例では下記のようなものがあります。

ファイル形式一般的な拡張子MIMEタイプ
テキスト.txttext/plain
HTML文書.htm .htmltext/html
XML文書.xmltext/xml
JavaScript.jstext/javascript
VBScript.vbstext/vbscript
CSS.csstext/css
GIF画像.gifimage/gif
JPEG画像.jpg .jpegimage/jpeg
PNG画像.pngimage/png
CGIスクリプト.cgiapplication/x-httpd-cgi
Word文書.docapplication/msword
PDF文書.pdfapplication/pdf

BLOB型で規定されたオブジェクトは、上記のファイル形式など文字列や一般数字では表現できないデータを使うオブジェクトということですね。

使い方の例

BLOB型を扱うためのメソッドは複数あり、例えばUtilitiesで用意されているnewBlobメソッドを使うことで新たなBLOB型オブジェクトを定義できたり、fetchしたHTTPレスポンスをgetBlobメソッドで取得したりすることができます。

サンプルコード

  // 非ファイルからのBlob新規作成
  const str  = "This is a pen."; 
  const newblob = Utilities.newBlob(str, MimeType.PDF, "text.pdf");

  console.log(newblob.getContentType()); // application/pdf
  console.log(newblob.getName()); // 	text.pdf


  // 「spheet」という名前のスプレッドシートを定数ssに格納しBlob型で取得
  const getblob = ss.getBlob();
  console.log(getblob.getContentType()); // application/pdf
  console.log(getblob.getName()); // 	spheet.pdf

ファイルの形式変換にはgetAsを使う

getBlobと似た形ですが、getAs(contentType)メソッドを使うと指定したファイル形式に変換することができます。

スプレッドシートをPDFに変換する方法、画像ファイル(png⇔jpeg)を相互に変換する方法とサンプルコードは下記の記事で解説しています。

まとめ

この記事ではBLOB(Binary Large Object/バイナリ・ラージ・オブジェクト)型についての解説を行いました。最後に概要をまとめておきます。

  • BLOB型とは、ファイル名とMIME型(「image/jpeg」「text/html」等)で定義されるデータ型
  • Utilitiesで用意されているnewBlobメソッドや、fetchしたHTTPレスポンスにgetBlobメソッドを使うことで扱える
  • getAs(contentType)でファイルタイプの変換が可能

この記事を書いた人

てつお
広告代理店出身、事業会社でWebマーケティングや開発の仕事をしている26歳です。プロフィール詳細はこちら
■Google広告認定資格|Google アナリティクス個人認定資格(GAIQ)|TOEIC920点