GASにおけるBLOB型(バイナリ・ラージ・オブジェクト型)とは
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タイプ |
---|---|---|
テキスト | .txt | text/plain |
HTML文書 | .htm .html | text/html |
XML文書 | .xml | text/xml |
JavaScript | .js | text/javascript |
VBScript | .vbs | text/vbscript |
CSS | .css | text/css |
GIF画像 | .gif | image/gif |
JPEG画像 | .jpg .jpeg | image/jpeg |
PNG画像 | .png | image/png |
CGIスクリプト | .cgi | application/x-httpd-cgi |
Word文書 | .doc | application/msword |
PDF文書 | application/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)でファイルタイプの変換が可能