Google Apps ScriptでSpreadsheet上の画像を一括取り出し【GAS】

Googleスプレッドシートは大変便利なのですが、シート上に貼り付けた画像を別で利用したいと思っても、どういうわけか貼り付けられても取り出せない。これ過去にも結構歯がゆい思いをしていたのですが、Google Apps Scriptで取り出す事ができました。

短いコードですが、色々と手順があるので、その仕組みを理解して装備が必要です。

サンプルスプレッドシート

メニューより「コマンド」⇒「画像取り出し」を実行するとスプレッドシート上の画像ファイルを指定のフォルダ内に解凍します。

コードと仕組み

仕組み

Google Spreadsheetのままだとどうにもならないので、以下の手順で取り出すようにしています。

  1. Google Spreadsheetを一旦、xlsx形式に変換する(UrlfetchAppで変換を掛けています)
  2. 変換を掛けたものをBlobとして取得し、ファイルを作らずにMimetypeはZIPとして指定する
  3. ZIPファイルになってるので、Unzipにてファイルの中身を解凍する(まだファイルは生成しない)
  4. xmlやらjpgやら色々入ってるので、ファイルのMimetypeを取得し今回はimage/jpegと一致するものを選択
  5. createFileにて指定のフォルダ内に画像ファイルをここで初めて生成する

xlsxやzip、その他解凍ファイルは全てメモリ上での話なので、実際にドライブ上に生成されるのは、選択的に解凍したjpgファイルのみになります。xlsxはxmlやjpg等をZIPで固めたファイルという仕様なので、実はアーカイバで解凍出来るという事はあまり知られていなかったりします。docxもpptxも同様です。

なので、Spreadsheetよりも寧ろ、DocumentやSlideのほうでこのスクリプトを使ったほうが利便性は高いと思います。同様にxlsxやpptxといったファイルからの取り出しも1.の手順だけ除外すれば取り出すことが可能です。

Google Apps ScriptでZIP圧縮・解凍をやってみる【GAS】

ソースコード

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)