Last active
February 26, 2024 02:23
-
-
Save UskeS/653c551fbd12b54f3fd2b79652e2f908 to your computer and use it in GitHub Desktop.
[InDesign] ドキュメントにオーバーセットテキストがあるとき保存できないようにするイベントリスナー
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @fileoverview ドキュメントにオーバーセットテキストがあるとき保存できないようにするイベントリスナー | |
* @author SAEGUSA Yusuke <https://twitter.com/Uske_S> | |
* @version v2.0.1 | |
* @description InDesignのStartupScriptsフォルダに入れてからInDesignを起動するか、InDesign起動後、このスクリプトを実行してください。 | |
*/ | |
//@targetengine "noticeBefSave" | |
app.eventListeners.add("beforeSave", callback); | |
function callback(ev) { | |
var tgtDoc = ev.target; | |
try { | |
// テキストフレームと脚注のオーバーセット検知 | |
var txf = tgtDoc.textFrames; | |
for (var i = 0; i < txf.length; i++) { | |
if (txf[i].overflows) { | |
selectAndAlert(ev, txf[i]); | |
exit(); | |
} | |
var ftn = txf[i].footnotes; | |
for (var j = 0; j < ftn.length; j++) { | |
// 脚注の文字がオーバーセットしていると parentTextFrames[0] が undefined になる | |
if (ftn[j].characters[-1].parentTextFrames[0] === undefined) { | |
selectAndAlert(ev, txf[i]); | |
exit(); | |
} | |
} | |
// 表組のオーバーセット検知 | |
var tbl = txf[i].tables; | |
for (var j = 0; j < tbl.length; j++) { | |
var c = tbl[j].cells.everyItem(); | |
for (var k = 0; k < tbl[j].cells.length; k++) { | |
if (c.overflows[k]) { | |
selectAndAlert(ev, c.getElements()[k]); | |
exit(); | |
} | |
} | |
} | |
} | |
// ストーリー単位のオーバーセット検知 | |
var pgi = tgtDoc.stories; | |
for (var i = 0; i < pgi.length; i++) { | |
if (!pgi[i].hasOwnProperty("overflows")) { | |
continue; | |
} else if (pgi[i].overflows) { | |
selectAndAlert(ev, pgi[i].texts[0].parentTextFrames[0]); | |
exit(); | |
} | |
} | |
} catch (e) { | |
alert(e); | |
} | |
} | |
function selectAndAlert(ev, obj) { | |
app.select(obj); | |
alert("オーバーセットされたテキストがあるため保存できません"); | |
ev.preventDefault(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment