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];
}