LoginSignup
1
2

More than 5 years have passed since last update.

InDesignからZIPを解凍するスクリプト

Posted at

InDesignから、フォルダ選択でフォルダを選択すると、中にある *.zip を解凍するスクリプト。
Windows 10 と MacOS X High Sierra, Mojave で動作確認
(Mojaveだと最初動かす時にアラートが出るかも)

適当に何かに組み込んで使ってください。

(function main() {
    var zipFolder = Folder.selectDialog('zipフォルダを選択');
    var zipFiles = zipFolder.getFiles();
    if (zipFiles.length) {
        for (var i = 0, len = zipFiles.length; i < len; i++) {
            var zipFile = zipFiles[i];
            if (/\.zip$/i.test(zipFile.name)) {
                var result = unzip(zipFile);
                var unzipFolder = result[0];
                for (var j = 0; j < 600; j++) {
                    if (unzipFolder.getFiles().length) break;
                    $.sleep(100);
                }
            }
        }
        alert('処理を終わりました。');
    }
}());

function unzip(zipFile) {
    var objFolder = Folder(zipFile.absoluteURI.replace(/\.zip$/i, ''));
    if (!objFolder.exists) objFolder.create();
    var zipFilePath = zipFile.fsName,
        objFolderPath = objFolder.fsName,
        scpt, lang;
    if ($.os.toLowerCase().indexOf('windows') >= 0) {
        scpt = [
            "dim objShell,objWshShell,objFolder,ZipFile",
            "Set objShell = CreateObject(\"shell.application\")",
            "Set ZipFile = objShell.NameSpace (\"" + zipFilePath + "\").items",
            "Set objFolder = objShell.NameSpace (\"" + objFolderPath + "\")",
            "objFolder.CopyHere ZipFile, &H14 + &H10",
            "returnValue = \"Copying " + zipFilePath + "\""
        ].join('\r\n');
        lang = 'VISUAL_BASIC';
    } else {
        scpt = 'do shell script "ditto -x -k -v \\"' + zipFilePath + '\\" \\"' + objFolderPath + '\\" 2>&1"';
        lang = 'APPLESCRIPT_LANGUAGE';
    }
    var result;
    try {
        result = app.doScript(scpt, ScriptLanguage[lang]);
    } catch (e) {
        result = 'Error: ' + e.message;
    }
    return [objFolder, result];
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2