Google Apps ScriptでGoogleドライブのフォルダ内にファイルを作成する方法

create

photo credit: t.metamorfosis X via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps ScriptでGoogleドライブを操作してメール添付を自動保存するツールを作成しています。

前回はこちらの記事。

Google Apps ScriptでGoogleドライブを操作する最も簡単なスクリプト
Google Apps ScriptでGoogleドライブを操作する最も簡単なスクリプトとしてGoogleドライブのフォルダとファイルをIDで取得してログ出力するスクリプトついてお伝えします。

まず手始めとして、Googleドライブのフォルダやファイルを取得する方法についてお伝えしました。

まだまだツールの完成には少しステップがありますが、一つずつ着実に進んでいきますよ。

今回は、次のステップとして、Google Apps ScriptでGoogleドライブの特定フォルダにファイルを作成する方法についてお伝えします。

MIMEタイプ、Blobオブジェクト、BlobSourceとはなんぞや?といった、けっこう重要な内容が目白押しなので、ぜひ覚えて頂ければと思います。

では、行ってみましょう!

スポンサーリンク

createFileメソッドで内容を指定してファイルを作成する

Googleドライブの特定のフォルダ内にファイルを作成するには、FolderオブジェクトへのcreateFileメソッドを使います。

createFileには二種類の使い方がありますので、それぞれお伝えしますね。

まず一つ目は、ファイル名、内容、MIMEタイプを指定する方法です。

書き方はこうです。

Folderオブジェクト.createFile(ファイル名, 内容, MIMEタイプ)

いずれの引数も文字列で指定をしますよ。

MIMEタイプとは

さて、MIMEタイプというのは

WebサーバとWebブラウザの間でやり取りされるデータの中でファイル形式を示す識別子

のことを言い、例えばプレーンなテキストファイルならば「text/plain」、HTMLファイルならば「text/html」といったものです。

以下ページにて一覧がありますのでご参考頂ければと思います。

参考MIMEタイプ一覧

MIMEタイプの列挙型

MIMEの指定方法について、Google Apps ScriptではMIMEタイプを表現するための列挙型が用意されていまして

MimeType.プロパティ

でアクセスすることができます。

createFileメソッドで使うMIMEタイプに使うプロパティとしては、例えば以下のようなものがあります。

  • PDF
  • 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ファイルが生成されているはずです。

GASでGoogleドライブ内に作成した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オブジェクトを取得しているんですね。

Fileオブジェクト.getBlob()

Blobオブジェクトはファイルに似たような性質を持つオブジェクトで、様々なコンテンツタイプを持ちます。

色々なオブジェクトをBlobオブジェクトとしていったん取得することで、別のコンテンツタイプを持つBlobオブジェクトやFileオブジェクトに変換ができるようになるということなんですね。

例えば、以下にリストするようなオブジェクトであれば、getBlobメソッド等でBlobオブジェクトを取得することができます。

  • Document
  • File
  • GmailAttachment
  • HTTPResponse
  • HtmlOutput
  • Spreadsheet
  • StaticMap

これらのオブジェクトを「BlobSource」とも言います。

目ざとい人は、この中に「GmailAttachment」があることに気づいているかも知れませんね。

そうなんです、Gmailの添付ファイルからBlobオブジェクトを取り出すことができるんですね。

このあたりについては、また別の記事で詳しくお伝えする予定です。

createFileメソッドでBlobオブジェクトからファイルを作成

そして、createFileメソッドのもう一つの使い方ですが、Blobオブジェクトからファイルを作成することができるんですね。

Folderオブジェクト.createFile(Blobオブジェクト)

スクリプトでいうと5行目ですね。

一旦、PDFファイルからBlobオブジェクトを取得して、そのオブジェクトからcreateFileをしているので、つまりはただのファイルコピーでした。

実行結果はこちら。

GASのcreateFileメソッドでPDFファイルをコピー

「高橋宣成の著書紹介.pdf」というファイルが二つになりました。

まとめ

Google Apps ScriptでGoolgleドライブの特定フォルダにファイルを作成する方法についてお伝えしました。

ファイルを作成するcreateFileメソッドには

  • 内容を指定してファイルを作成する
  • Blobオブジェクトからファイルを作成する

という二つの方法がありましたね。

Blobオブジェクトもいきなり出てくると、なんじゃこりゃとなりますが、わかってしまえばそんなにビックリするようなものではありません。

またMIMEタイプBlobSourceなどといった事項もぜひ覚えておいてください。

さて、次回ですが実際にGmailから添付ファイルを取得する方法について進めていきたいと思います。

429 Too Many Requests

どうぞお楽しみに!

連載目次:GASでGoogleドライブを操作してメール添付を自動保存

メールの添付ファイルをGoogleドライブに自動保存するツールを題材として、Google Apps ScriptでGoogleドライブを操作する方法についてお伝えするシリーズです。
  1. Google Apps ScriptでGoogleドライブを操作する最も簡単なスクリプト
  2. Google Apps ScriptでGoolgeドライブのフォルダ内にファイルを作成する方法
  3. Google Apps ScriptでGmailの添付ファイルをGoogleドライブに保存する
タイトルとURLをコピーしました