/** * @fileoverview テンプレートファイルを開いている状態で、保存先フォルダとマップファイルを選択し、テンプレートの文字列を置換して保存する。マップファイルは最初の行に「FILE タブ 1つめのプレイスホルダ 2つめのプレイスホルダ ...」と記述し、以降の行で「出力ファイル名 1つめプレイスホルダへの値 2つめプレイスホルダへの値 ...」と書いていく * @author Kenshi Muto <kmuto@debian.org> */ /* Copyright: 2010 Kenshi Muto ---------------------------------------------------------------------- ソフトウェア使用許諾同意書 本ソフトウェアの利用・変更・再配布にあたっては、下記の使用許諾同意書に 同意する必要があります。 1. 本使用許諾同意書における「ソフトウェア」とは、機械可読の資料 (ライブ ラリ、スクリプト、ソースファイル、データファイル)、実行形式、および 文書を意味します。 2. 本ソフトウェアの使用許諾同意書に同意する限りにおいて、使用者は 本ソフトウェアを自由に利用、変更することができます。 3. 本ソフトウェアに変更を加えない限りにおいて、使用者は本ソフトウェアを 自由にコピー、再配布することができます。 4. 本ソフトウェアは無保証です。作者およびそれに関連する組織、配布者は、 本ソフトウェアの使用に起因する一切の直接損害、間接損害、偶発的損害、 特別損害、懲戒的損害、派生的損害について何らの責任・保証も負いません。 5. 本ソフトウェアを変更した上で再配布するときには、下記の事項すべてに 従わなければなりません。 - 使用許諾同意書の内容に変更を加えてはなりません。技術上の理由で 文字エンコーディングの変換を行うことは許可しますが、その使用者が 特殊な技術的措置なしに可読な形でなければなりません。 - 技術上の理由でバイナリ化・難読化を行う場合も、変更箇所を含めた ソフトウェアを、その使用者が可読可能な形式の形で同一のメディアで 提供しなければなりません。本使用許諾同意書の2条および3条により、 使用者が可読形式の該当ソフトウェアを変更、コピー、再配布することを 妨げてはなりません。 - ソフトウェア構成物の所定の作者名の欄に、変更者のクレジット (個人名、企業名、所属、連絡先など)を「追加」しなければなりません。 6. 本ソフトウェアを変更した上で再配布するときには、変更理由および その内容を明記することが推奨されます。 7. 使用者がソフトウェアに適用可能な特許に対して特許侵害にかかわる何らか の行動を開始した時点で、この使用許諾同意書は自動的に終了し、以降 使用者はこの使用許諾書によって与えられた一切の権利を放棄するものと します。 著作権所有者 Copyright (C) 2010 Kenshi Muto. All rights reserved. 使用許諾同意書バージョン1.0 著作権所有者による書面での事前の許可がない限り、この使用許諾同意書 に変更を加えてはなりません。 ---------------------------------------------------------------------- */ /** * 対象ドキュメント内のプレイスホルダを値で置き換える * @param {Document} thisDocument 対象ドキュメント * @param {String} kvarray[] プレイスホルダと値をタブで区切った文字列の配列 * @type Nothing */ function replaceDocument(thisDocument, kvarray) { for (var i = 0; i < thisDocument.stories.length; i++) { for (var i2 = 0; i2 < kvarray.length; i2++) { var kv = kvarray[i2].split("\t"); if (thisDocument.stories[i].textRange.contents.match(kv[0]) != null) { thisDocument.stories[i].textRange.contents = thisDocument.stories[i].textRange.contents.replace(kv[0], kv[1]); } } } } var myDocument = app.activeDocument; var tmplFile = app.activeDocument.fullName; var folder = Folder.selectDialog("生成したファイルを配置するフォルダ"); if (folder != null) { var listfile = File.openDialog("ファイル名と置き換えキーワードを示したマップファイル", "*.txt"); if (listfile != null) { listfile.open("r"); var lineno = 0; var header = null; while (!listfile.eof) { var l = listfile.readln(); lineno++; if (l.match(/^#/) != null) { // #で始まる行はスキップ } else if (header != null) { var values = l.split("\t"); if (values.length != header.length) { alert(lineno + "行がヘッダの列数と合いません。タブを忘れているか何か問題があります。"); } else { var outfilename = folder + "/" + values[0]; var kvarray = []; for (var i = 0; i < header.length; i++) { kvarray.push(header[i] + "\t" + values[i]); } replaceDocument(myDocument, kvarray); // 拡張子で保存オプションを変更 if (outfilename.match(/\.ai$/)) { myDocument.saveAs(new File(outfilename), new IllustratorSaveOptions()); } else if (outfilename.match(/\.eps$/)) { myDocument.saveAs(new File(outfilename), new EPSSaveOptions()); } else { alert("未知のファイル形式です (" + outfilename + ")。許される拡張子は .eps または .ai です。"); } myDocument.close(); myDocument = app.open(tmplFile); } } else { // ヘッダ部 header = l.split("\t"); } } alert("完了しました"); } }