closeByScriptは確か、キャンセル動作(つまり「いいえを押した」)時は「クリックしたものとみなす」という体で動作するんじゃなかったっけ。
内部で実際そんな考え方で動いてるかどうかは知らんが、実際ワンクリックされたものと同じ挙動を示した気がした。
だからリンクタグ等でこのメソッドを呼ぶ時は[s]タグを直後に用意するか、もしくは
[link exp="kag.closeByScript(%[ask:true, ignore:true])"]Exit[endlink]
みたいな感じで独自に引数を追加し、MainWindow.tjsのcloseByScriptを直接

function closeByScript(elm){
   /* 中略 */
// closeByScript は、このハンドラが終わった直後に
// 「終了しますか?」のダイアログを表示する。
// 終了する場合はそのまま終了する。
// 終了しない場合は 'not_closed' トリガが発行され、
// 実行は継続する。
// ! ConfigLayer等からcloseByScriptと呼んだ場合、「いいえ」が押されるとメッセージが勝手に進んでしまうので
// elm.ignoreオプションが有る場合は以下を発動しない
if(elm.ignore) return;

conductor.wait(%[
not_closed : askOnClose_save
? (function{
// 実際にこれが呼ばれることはないが、一応
askOnClose = true;
} incontextof this)
: (function{
} incontextof this)
]);
}
}

みたいな具合に改造してやんのがいいんじゃないか。まあ改造するのはめんどくさいから
素直にリンクの直後に[s]置いとけっていう話だけど