コモノExtendScript100本ノック

超初心者のDTPオペレーターが週にひとつスクリプトを書くブログ

075.【Id】指定フォルダ内のOfficeデータから画像を抽出

画像がOfficeデータに貼っつけられたかたちで入稿されることがよくあります。
一つならまだしも、たくさんあると一つ一つzip化してmediaフォルダまで潜って…とするのはちょっと面倒
(Bridgeを使えば多少手軽になるかもですが、なぜかうちのBridgeはめちゃめちゃ重い)。
ということで、複数のOfficeデータ(docx/xlsx/pptx)をまとめて圧縮→解凍→画像だけ抽出するInDesignスクリプトを書きました。

挙動

  1. 任意のフォルダにOfficeデータを保存
  2. スクリプトを実行
  3. 実行するフォルダを問われるので、1のフォルダを指定
  4. 1のフォルダ内に📁作業用と📁抽出画像が生成される
  5. 📁作業用にOfficeデータをコピーし、圧縮
  6. 圧縮したデータを解凍
  7. 解凍したフォルダ内に📁mediaがあれば、その中身を📁抽出画像にコピー

f:id:haraguai_is_bad:20210318180424p:plain:w200

コード

メモ

分かったこと

  • getFiles()のマスクで複数の拡張子を指定する方法
    getFiles()の引数として、FileまたはFolderオブジェクトを引数にとる関数を指定することができる。
    この関数は、検索で見つかったファイルやフォルダごとに呼び出され、trueの場合そのファイルやフォルダが戻り値の配列に追加される。

積み残し

  • 画像データのコピーやフォルダの作成がうまくいかなかったときの処理
  • 画像データが無かったら📁抽出画像を削除して「画像はありませんでした」とアラート

参考