みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps ScriptでGoogleドライブを操作してメール添付を自動保存するツールを作成しています。
前回はこちらの記事。
まず手始めとして、Googleドライブのフォルダやファイルを取得する方法についてお伝えしました。
まだまだツールの完成には少しステップがありますが、一つずつ着実に進んでいきますよ。
今回は、次のステップとして、Google Apps ScriptでGoogleドライブの特定フォルダにファイルを作成する方法についてお伝えします。
MIMEタイプ、Blobオブジェクト、BlobSourceとはなんぞや?といった、けっこう重要な内容が目白押しなので、ぜひ覚えて頂ければと思います。
では、行ってみましょう!
createFileメソッドで内容を指定してファイルを作成する
Googleドライブの特定のフォルダ内にファイルを作成するには、FolderオブジェクトへのcreateFileメソッドを使います。
createFileには二種類の使い方がありますので、それぞれお伝えしますね。
まず一つ目は、ファイル名、内容、MIMEタイプを指定する方法です。
書き方はこうです。
いずれの引数も文字列で指定をしますよ。
MIMEタイプとは
さて、MIMEタイプというのは
WebサーバとWebブラウザの間でやり取りされるデータの中でファイル形式を示す識別子
のことを言い、例えばプレーンなテキストファイルならば「text/plain」、HTMLファイルならば「text/html」といったものです。
以下ページにて一覧がありますのでご参考頂ければと思います。
参考:MIMEタイプ一覧
MIMEタイプの列挙型
MIMEの指定方法について、Google Apps ScriptではMIMEタイプを表現するための列挙型が用意されていまして
でアクセスすることができます。
createFileメソッドで使うMIMEタイプに使うプロパティとしては、例えば以下のようなものがあります。
- CSS
- CSV
- HTML
- JAVASCRIPT
- PLAIN_TEXT
この場合、内容は文字列で指定をしますので、基本的にはテキスト形式のファイルが多いですが、PDFも作れますよ。
MimeTypeの列挙型については、以下公式ドキュメントに他の形式も記載されているので、よろしければご覧ください。
参考:Enum MimeType | Apps Script
内容を指定してファイルを作成する例
例えば、以下のようなスクリプトを実行してみましょう。
function createFile(){ const folder = DriveApp.getFolderById('XXXXXXXXXXXX'); //フォルダIDを指定 folder.createFile('New File', 'Hello, world!', MimeType.PDF); }
すると、指定したフォルダ内に以下のようなPDFファイルが生成されているはずです。
Blobオブジェクトを指定してファイルを作成する
では、文字列以外のものからファイルを作成したい場合はどうすれば良いでしょうか?
そのような場合は、Blobオブジェクトを使います。
Blobオブジェクトとは
Blobオブジェクト…なんかブヨブヨした感じがしますね。
「Blob」は一般的には「Binary Large Object」の略とされています。
公式ドキュメントによるとBlobオブジェクトは以下のように紹介されています。
Apps Scriptサービスのデータ交換オブジェクト
データを交換するためのオブジェクトということですね。
ちょっとわかりづらいので、実際のスクリプトで説明をしていきます。
例えば、以下スクリプトをご覧ください。
function createFile(){ const folder = DriveApp.getFolderById('XXXXXXXXXXXX'); //フォルダID const file = DriveApp.getFileById('XXXXXXXXXXXX'); //ファイルID const blob = file.getBlob(); folder.createFile(blob); }
3行目でPDFファイルをmyFileに格納しています。これは前回の記事でお伝えした通りですね。
そして、4行目ですが、そのmyFileからgetBlobメソッドでBlobオブジェクトを取得しているんですね。
Blobオブジェクトはファイルに似たような性質を持つオブジェクトで、様々なコンテンツタイプを持ちます。
色々なオブジェクトをBlobオブジェクトとしていったん取得することで、別のコンテンツタイプを持つBlobオブジェクトやFileオブジェクトに変換ができるようになるということなんですね。
例えば、以下にリストするようなオブジェクトであれば、getBlobメソッド等でBlobオブジェクトを取得することができます。
- Document
- File
- GmailAttachment
- HTTPResponse
- HtmlOutput
- Spreadsheet
- StaticMap
これらのオブジェクトを「BlobSource」とも言います。
目ざとい人は、この中に「GmailAttachment」があることに気づいているかも知れませんね。
そうなんです、Gmailの添付ファイルからBlobオブジェクトを取り出すことができるんですね。
このあたりについては、また別の記事で詳しくお伝えする予定です。
createFileメソッドでBlobオブジェクトからファイルを作成
そして、createFileメソッドのもう一つの使い方ですが、Blobオブジェクトからファイルを作成することができるんですね。
スクリプトでいうと5行目ですね。
一旦、PDFファイルからBlobオブジェクトを取得して、そのオブジェクトからcreateFileをしているので、つまりはただのファイルコピーでした。
実行結果はこちら。
「高橋宣成の著書紹介.pdf」というファイルが二つになりました。
まとめ
Google Apps ScriptでGoolgleドライブの特定フォルダにファイルを作成する方法についてお伝えしました。
ファイルを作成するcreateFileメソッドには
- 内容を指定してファイルを作成する
- Blobオブジェクトからファイルを作成する
という二つの方法がありましたね。
Blobオブジェクトもいきなり出てくると、なんじゃこりゃとなりますが、わかってしまえばそんなにビックリするようなものではありません。
またMIMEタイプやBlobSourceなどといった事項もぜひ覚えておいてください。
さて、次回ですが実際にGmailから添付ファイルを取得する方法について進めていきたいと思います。
どうぞお楽しみに!