为什么即使满足条件,我的if语句也没有正确执行?

时间:2016-10-25 00:48:59

标签: javascript adobe-indesign

这是一个InDesign脚本,用于将indd文件转换为jpgs,然后将其导出并重命名为桌面上的文件夹。这一切都很好,但有一部分是我试图做的,只是导出那些没有母版和广告的网页"应用。我已经编写了一个if语句,用于检查哪个母版页已应用于当前文档的当前页面,如果它没有" H-Advertising"那么表面上应该只导出该页面。应用为母版页。我知道如果我添加一个不同的条件(例如if(3!= 4))并且它也能够提醒每个页面的母版页,循环可以工作,但它似乎只是继续并将页面添加到无论如何我要导出的页面数组。

   Main();

    function Main() {
   // Check to see whether any InDesign documents are open.
  // If no documents are open, display an error message.
  if (app.documents.length > 0) {
    app.jpegExportPreferences.exportingSpread = false;

    //makes sure there is a book open
    if (app.books.length != 1)
      alert("This only works when you have one (1) book open and the     first file in that book open");
    else

    //loop through the book's stories
      for (b = 0; b < app.books[0].bookContents.length; b++) {
      // initialize pages variable
      var pages = [];
      // loop through the pages in the active document
      for (i = 0; i < app.activeDocument.pages.length; i++) {

        // initialize variable holding document name, and then rename as follows
        var myDocumentName = app.books[0].bookContents[b].fullName;
        c = app.open(app.books[0].bookContents[b].fullName);
        myDocumentName = myDocumentName.name.replace("indd", "jpg");
        myDocumentName = myDocumentName.replace("WN16", "WN16_");

        // get value of the current page's applied master
        if (app.activeDocument.pages[i].appliedMaster != null) {
        var appliedMaster = app.activeDocument.pages[i].appliedMaster.name;
        }


        // if it's not an advertising page, get the page number and add it to an array containing page numbers to export
    if (appliedMaster !== "H-ADVERTISING" && appliedMaster!= "[None]" && appliedMaster!= null) {
      alert(appliedMaster);
      pages.push(app.activeDocument.pages[i].name);
      printpages = pages.join(",");
      // set the pageString of pages to export as jpegs 
      app.jpegExportPreferences.pageString = printpages;
      // export all the pages using the export page range page string
      c.exportFile(ExportFormat.JPG, File(Folder.desktop + "/EDIT_Jpgs/" + myDocumentName));

    }

      }

    };

2 个答案:

答案 0 :(得分:0)

注意:Property&#39; pageString&#34;当JPEG导出范围不是全部时有效。所以 - 只是为了确定 - 您可能需要将 app.jpegExportPreferences.jpegExportRange 设置为&#39; ExportRangeOrAllPages.EXPORT_RANGE&#39;

注意2:考虑可以在没有打开文档的情况下打开一本书,或者activeDocument可以来自app.books [0] ==&gt;之外。在这种情况下,您的循环 for(i = 0; i&lt; app.activeDocument.pages.length; i ++)可能导致错误的值,导致目标doc被打开...在此循环内。< / p>

亚雷克

答案 1 :(得分:0)

好的,在我更新到InDesign 2017之后,脚本现在正在运行。所以,除了InDesign中一定存在错误之外,不是真正的答案。我在代码中唯一调整的就是添加这个

        if (app.activeDocument.pages[i].appliedMaster !== null && app.activeDocument.pages[i].appliedMaster!== "H-ADVERTISING" && app.activeDocument.pages[i].appliedMaster!==null) {
           appliedMaster = app.activeDocument.pages[i].appliedMaster.name;
        }

在检查母版页实际值的代码中,而不是检查分配了母版页值的变量。这似乎是检查过滤任何没有应用母版页的页面的技巧(null或“[None]”)