InDesign脚本错误" ReferenceError:对象无效"

时间:2015-10-05 17:13:12

标签: javascript templates curl autohotkey adobe-indesign

我试图恢复生活和过去使用过的旧脚本。该脚本将使用autohotkey和curl下载漫画(我们有权使用)...然后在InDesign中,我们将从javascript Scripts面板运行以下内容:

#targetengine "session"
var date, month, year, myDocument;
var curDate = new Date();
var myTemplatePath = "/c/Comic/ComicImport.indd";
var myComicsPath = "/c/Comic/Comics/";
var myTemplate = new File(myTemplatePath);



if (myTemplate.exists) {
    try {
        myDocument = app.open(myTemplate);
    } catch (e) {
        alert("Could not open template, exiting\n" + e);
        exit();
    }
    var win = showDialog();
} else {
    alert("Could not locate template at:\n" + myTemplatePath + "\nexiting");
}



function showDialog() {
    var win = new Window('palette');
    with(win){
        win.Pnl = add('panel', undefined, 'Date / Month / Year');
        win.Pnl.orientation = 'row';
        with(win.Pnl) {
            win.Pnl.day = add('edittext');
            win.Pnl.day.text = curDate.getDate();
            win.Pnl.day.preferredSize = [30,20];

            win.Pnl.month = add('edittext');
            win.Pnl.month.text = curDate.getMonth() + 1;
            win.Pnl.month.preferredSize = [30,20];

            win.Pnl.year = add('edittext');
            win.Pnl.year.text = curDate.getFullYear();
            win.Pnl.year.preferredSize = [50,20];
        }
        win.btnOk = add('button', undefined, 'Import Comic');
        win.btnOk.onClick = setDate;
    };
    win.center();
    win.show();
    return win;
}
function setDate() {
    date = win.Pnl.day.text;
    month = win.Pnl.month.text;
    year = win.Pnl.year.text;
    // OK we close the window and do the import
    //win.close();
    importComics();
}



function importComics() {
    try {
        //set comic1 to "macintosh Hd:users:marshall:documents:comics:" &      DYear & Dmonth & Dday & "pzjud-a.tif"
        var comics = new Array();
        // REPLACE with own filepaths, could be
        //comics.push(new File("/c/comics/" + year + month + date + "pzjud-    a.tif"));
        comics.push(new File(myComicsPath + "comic1-" + year + "-" + month +  "-" + date + ".tif"));
        comics.push(new File(myComicsPath + "comic2-" + year + "-" + month +  "-" + date + ".tif"));
        comics.push(new File(myComicsPath + "comic3-" + year + "-" + month + "-" + date + ".tif"));
        comics.push(new File(myComicsPath + "comic4-" + year + "-" + month +  "-" + date + ".tif"));
        comics.push(new File(myComicsPath + "comic5-" + year + "-" + month +  "-" + date + ".tif"));
    } catch (e) {
        alert("Error assigning images for import, stopping script\n" + e);
        exit();
    }

    for (i = 1; i <= comics.length; i++) {
        // Script label of the rectangles/pageitems to place the graphics     into
        var myRect  = myDocument.pageItems.item("comic" + i);
        try {
        myRect.place(comics[i-1]);
        } catch (e) {
            alert(e);
        }
        myRect.fit(FitOptions.CONTENT_TO_FRAME);
    }
}

然而,只要我点击导入漫画按钮,我就会得到&#34; ReferenceError:对象无效&#34;错误。我的目录结构对我来说没问题。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

注意这一行:

var myRect  = myDocument.pageItems.item("comic" + i);

在最新的ID版本中,它不再调用“item.label”而是“item.name” (图层面板中显示的那个)

如果您的doc目标矩形内部有“label == comic + i”,您必须重复/移动此值作为矩形的名称。

否则 - 您的代码需要在所有pageItems中创建一个循环,并在放置图像之前检查特定的item.label。