随分と昔に質問として投稿しました「表に対して縦方向への流し込むスクリプト」(当時の投稿記事はサイトにURLを貼っておきました。当時と名前が変わっているのはお察しください)
このスクリプトが無事に解決出来たので感謝の意を込めてこちらに投稿させていただきます。
※なお実務で使えたら良いと思っての事なのでセルの結合時などは視野の外、表と単語の数が合わなかった時にはアラートを表示して中止にしています。
InDesign CC2022
app.doScript(main,ScriptLanguage.JAVASCRIPT,[],UndoModes.FAST_ENTIRE_SCRIPT);
main();
function main() {
CR = String.fromCharCode(13); //改行
TAB = String.fromCharCode(9); //タブ
if (app.selection.length == 1) {
var tblObj = app.selection[0];
switch (app.selection[0].constructor.name) {
case "Cell":
case "Table":
case "Row":
case "Column":
break;
default:
}
var clipAry = new Array();
var myDoc = app.activeDocument;
with (txtfrmObj = myDoc.textFrames.add()) {
visibleBounds = ["0cm", "0cm", "18cm", "21cm"];
contents = "ダミー";
app.selection = characters.itemByRange(0, -1);
app.paste();
while (characters[-1].contents == CR) characters[-1].remove(); //最後の改行を削除
var clipstr = "" + contents;
}
if (clipstr != "") {
var tblRows = tblObj.rows.length;
var tblCols = tblObj.columns.length;
var wordCount = clipstr.split(/\s+/).length; // クリップボードの単語数を数える
if (wordCount > tblRows * tblCols) {
alert("クリップボードの単語数が表のセル数を超えています。");
} else {
try {
var rowIdx = 0;
var colIdx = 0;
var clipAry = clipstr.split(CR);
for (var i = 0; i < clipAry.length; i++) {
tblObj.rows[rowIdx].cells[colIdx].contents = clipAry[i];
rowIdx++;
if (rowIdx >= tblRows) {
rowIdx = 0;
colIdx++;
if (colIdx >= tblCols) break;
}
}
} catch (e) {
alert("表組みへの流し込み中にエラーが発生しました。\r" + e);
}
}
} else {
alert("クリップボードの内容がありません。");
}
txtfrmObj.remove();
}
}
特に問題なく動いていますが、何かおかしい点などがありましたらご指摘などあると助かります…!
改編などはご自由に。
[21227] DTP屋の柴犬 (2023/04/18 Tue 11:30) web
現在のままだと表の1行目1列目から流し込みが始まってしまうのでtry の中身を以下のように書き換えることで、選択範囲の列に流し込むようになります。連投すみません…!
try {
var colIdx = tblObj.columns[0].index; // 選択した列のインデックスを取得
var rowIdx = 0;
var clipAry = clipstr.split(CR);
for (var i = 0; i < clipAry.length; i++) {
tblObj.rows.item(rowIdx).cells.itemByRange(colIdx, colIdx).contents = clipAry[i];
rowIdx++;
if (rowIdx >= tblRows) {
rowIdx = 0;
colIdx++;
if (rowIdx >= tblRows) break;
}
}
}
[21228] DTP屋の柴犬 (2023/04/18 Tue 15:06) web