2013-10-16 59 views
0

我正在完成一個腳本液滴,以將所有使用的色板從多個放置在腳本上並列出它們的無縫文檔中拉出。我正在從我編寫的腳本中調整這個腳本,以便從單個文件中放置所有使用的色板。Applescript設計列出來自多個文件的所有顏色色板

我有基礎知識,但遇到了兩個問題,無法找到答案。

問題1:我需要將該行添加到「重複,直到swatchCount < 2」,但這會在重複內重複。不起作用。

問題2 :(最大的問題)「colorList」需要將來自每個文檔的顏色一起添加到一個列表中。由於我重複它只是列出最後處理文件的顏色。如何保存每個文件的顏色,然後列出它們?

我會很感激任何幫助,我打了一堵牆。

on open these_items 

    repeat with i from 1 to the count of these_items 
     set this_item to item i of these_items 
     set the item_info to info for this_item 
     set this_item to POSIX path of this_item 

     tell application "Adobe InDesign CC" 
      open this_item 

      tell active document 
       delete unused swatches 
       set allSwatches to every swatch 
      end tell 
      set swatchCount to count of allSwatches 
      set colorList to "" 
      -- repeat until swatchCount < 2 
      set thisSwatch to item swatchCount of allSwatches 

      try 
       set swatchProps to type of thisSwatch 
       set swatchProps to "Gradient" 
      on error 
       set swatchProps to "Color" 
      end try 

      if swatchProps = "Color" then 

       set swatchName to name of thisSwatch as string 
       set swatchType to model of thisSwatch as string 
       set swatchSpace to space of thisSwatch as string 
       set swatchColor to color value of thisSwatch 

       if swatchType contains "spot" then 
        set swatchType to "Spot" 
       else 
        if swatchType contains "prss" then 
         set swatchType to "Process" 
        end if 
       end if 

       if swatchSpace contains "RGB" then 
        set rrr to ((item 1 of swatchColor) as integer) 
        set ggg to ((item 2 of swatchColor) as integer) 
        set bbb to ((item 3 of swatchColor) as integer) 
        set swatchMix to (" value: R-" & rrr & " G-" & ggg & " B-" & bbb) as string 

        if swatchName does not contain "registration" then 
         set swatchItem to "Name: " & swatchName & swatchMix & " space: RGB" & " type: " & swatchType & return 
        else 
         set swatchItem to "" 
        end if 
       else 
        if swatchSpace contains "CMYK" then 
         set ccc to ((item 1 of swatchColor) as integer) 
         set mmm to ((item 2 of swatchColor) as integer) 
         set yyy to ((item 3 of swatchColor) as integer) 
         set kkk to ((item 4 of swatchColor) as integer) 
         set swatchMix to (" value: C-" & ccc & " M-" & mmm & " Y-" & yyy & " K-" & kkk) as string 

         if swatchName does not contain "registration" then 
          set swatchItem to "Name: " & swatchName & swatchMix & " space:CMYK" & " type: " & swatchType & return 
         else 
          set swatchItem to "" 
         end if 
        else 
         if swatchSpace contains "LAB" then 
          set lll to ((item 1 of swatchColor) as integer) 
          set aaa to ((item 2 of swatchColor) as integer) 
          set bbb to ((item 3 of swatchColor) as integer) 

          set swatchMix to (" value: L-" & lll & " A-" & aaa & " B-" & bbb) as string 

          if swatchName does not contain "registration" then 
           set swatchItem to "Name: " & swatchName & swatchMix & " space: LAB" & " type: " & swatchType & return 
          else 
           set swatchItem to "" 
          end if 
         end if 
        end if 
       end if 

       set colorList to colorList & swatchItem 
      end if 

      tell active document to close saving no 
      set swatchCount to swatchCount - 1 

      --end repeat 
     end tell 

    end repeat 



    set dragged_items to these_items as string 
    set old_delimiters to AppleScript's text item delimiters 
    set AppleScript's text item delimiters to {":"} 

    set theClientName to text item 2 of dragged_items 
    set theFileName to text item 5 of dragged_items 

    set AppleScript's text item delimiters to old_delimiters 

    set theOrderNumber to text 1 through 5 of theFileName 
    set headerInfo to "Client: " & theClientName & "  Order # " & theOrderNumber & "  File: " & theFileName 
    tell application "Adobe InDesign CC" 
     tell view preferences 
      set horizontal measurement units to inches 
      set vertical measurement units to inches 
     end tell 
     make new document with properties {document preferences:{page width:8.5, page height:11}} 
     tell view preferences 
      set horizontal measurement units to inches 
      set vertical measurement units to inches 
     end tell 
     tell active document 
      set zero point to {0, 0} 
      set properties of guide preferences to {guides shown:false} 
      set properties of text preferences to {show invisibles:false} 
      set properties of view preferences to {ruler origin:page origin, horizontal measurement units:inches, show frame edges:false, show rulers:true, vertical measurement units:inches} 
      tell layout window 1 
       zoom given fit page 
       set properties to {view display setting:typical, transform reference point:top left anchor} 
      end tell 

      make new text frame with properties {geometric bounds:{0.5, 0.5, 0.75, 8.0}, contents:headerInfo, color:"None"} 

      set paragraphCount to count of paragraphs of colorList 
      repeat until paragraphCount > 19 
       set colorList to colorList & "name: _________________________" & " value: ____________________" & " space: ______" & " type: _________" & return 
       set paragraphCount to count of paragraphs of colorList 
      end repeat 

      make new text frame with properties {geometric bounds:{4.5, 0.5, 20.0, 8.0}, contents:colorList, color:"None"} 

      tell text frame 1 
       tell every text to set point size to 10 
       tell every paragraph 
        make tab stop with properties {alignment:left align, position:2.875} 
        make tab stop with properties {alignment:left align, position:5.125} 
        make tab stop with properties {alignment:left align, position:6.375} 
       end tell 
       set geometric bounds to {1.0, 0.5, 11, 8.0} 
      end tell 
     end tell 
    end tell 

end open 

on run 
    -- Handle the case where the script is launched without any dropped files 
    open (choose file with multiple selections allowed) 
end run 

我已經加入你建議「作者Darrick Herwehe」但我現在在不同的部分得到一個錯誤的變化。

無法獲取文檔ID 30
文檔ID的29 「Adobe InDesign中CC」 的顏色標識344 --name的顏色標識344的名稱 - 參考

得到這個:設置swatchName到thisSwatch 開放these_items的名字 集colorList爲 「」 集swatchItem爲 「」

repeat with i from 1 to the count of these_items 

    --Get swatches from document start 
    set this_item to item i of these_items 
    set the item_info to info for this_item 
    set this_item to POSIX path of this_item 

    tell application "Adobe InDesign CC" 
     open this_item 

     tell active document 
      delete unused swatches 
      set allSwatches to every swatch 
     end tell 
     set swatchCount to count of allSwatches 

     repeat until swatchCount < 2 

      repeat with j from 1 to (count allSwatches) 
       set thisSwatch to item swatchCount of allSwatches 

       try 
        set swatchProps to type of thisSwatch 
        set swatchProps to "Gradient" 
       on error 
        set swatchProps to "Color" 
       end try 

       if swatchProps = "Color" then 
              set swatchName to name of thisSwatch 
        set swatchType to model of thisSwatch 
        set swatchSpace to space of thisSwatch 
        set swatchColor to color value of thisSwatch 

        if swatchType contains "spot" then 
         set swatchType to "Spot" 
        else 
         if swatchType contains "prss" then 
          set swatchType to "Process" 
         end if 
        end if 

        if swatchSpace contains "RGB" then 
         set rrr to ((item 1 of swatchColor) as integer) 
         set ggg to ((item 2 of swatchColor) as integer) 
         set bbb to ((item 3 of swatchColor) as integer) 
         set swatchMix to (" value: R-" & rrr & " G-" & ggg & " B-" & bbb) as string 

         if swatchName does not contain "registration" then 
          set swatchItem to "Name: " & swatchName & swatchMix & " space: RGB" & " type: " & swatchType & return 
         else 
          set swatchItem to "" 
         end if 
        else 
         if swatchSpace contains "CMYK" then 
          set ccc to ((item 1 of swatchColor) as integer) 
          set mmm to ((item 2 of swatchColor) as integer) 
          set yyy to ((item 3 of swatchColor) as integer) 
          set kkk to ((item 4 of swatchColor) as integer) 
          set swatchMix to (" value: C-" & ccc & " M-" & mmm & " Y-" & yyy & " K-" & kkk) as string 

          if swatchName does not contain "registration" then 
           set swatchItem to "Name: " & swatchName & swatchMix & " space:CMYK" & " type: " & swatchType & return 
          else 
           set swatchItem to "" 
          end if 
         else 
          if swatchSpace contains "LAB" then 
           set lll to ((item 1 of swatchColor) as integer) 
           set aaa to ((item 2 of swatchColor) as integer) 
           set bbb to ((item 3 of swatchColor) as integer) 

           set swatchMix to (" value: L-" & lll & " A-" & aaa & " B-" & bbb) as string 

           if swatchName does not contain "registration" then 
            set swatchItem to "Name: " & swatchName & swatchMix & " space: LAB" & " type: " & swatchType & return 
           else 
            set swatchItem to "" 
           end if 
          end if 
         end if 
        end if 
        tell active document to close saving no 
        set colorList to colorList & swatchItem 
       end if 


       set swatchCount to swatchCount - 1 

      end repeat 
     end repeat 
    end tell 

end repeat 



set dragged_items to these_items as string 
set old_delimiters to AppleScript's text item delimiters 
set AppleScript's text item delimiters to {":"} 

set theClientName to text item 2 of dragged_items 
set theFileName to text item 5 of dragged_items 

set AppleScript's text item delimiters to old_delimiters 

set theOrderNumber to text 1 through 5 of theFileName 
set headerInfo to "Client: " & theClientName & "  Order # " & theOrderNumber & "  File: " & theFileName 
tell application "Adobe InDesign CC" 
    tell view preferences 
     set horizontal measurement units to inches 
     set vertical measurement units to inches 
    end tell 
    make new document with properties {document preferences:{page width:8.5, page height:11}} 
    tell view preferences 
     set horizontal measurement units to inches 
     set vertical measurement units to inches 
    end tell 
    tell active document 
     set zero point to {0, 0} 
     set properties of guide preferences to {guides shown:false} 
     set properties of text preferences to {show invisibles:false} 
     set properties of view preferences to {ruler origin:page origin, horizontal measurement units:inches, show frame edges:false, show rulers:true, vertical measurement units:inches} 
     tell layout window 1 
      zoom given fit page 
      set properties to {view display setting:typical, transform reference point:top left anchor} 
     end tell 

     make new text frame with properties {geometric bounds:{0.5, 0.5, 0.75, 8.0}, contents:headerInfo, color:"None"} 

     set paragraphCount to count of paragraphs of colorList 
     repeat until paragraphCount > 19 
      set colorList to colorList & "name: _________________________" & " value: ____________________" & " space: ______" & " type: _________" & return 
      set paragraphCount to count of paragraphs of colorList 
     end repeat 

     make new text frame with properties {geometric bounds:{4.5, 0.5, 20.0, 8.0}, contents:colorList, color:"None"} 

     tell text frame 1 
      tell every text to set point size to 10 
      tell every paragraph 
       make tab stop with properties {alignment:left align, position:2.875} 
       make tab stop with properties {alignment:left align, position:5.125} 
       make tab stop with properties {alignment:left align, position:6.375} 
      end tell 
      set geometric bounds to {1.0, 0.5, 11, 8.0} 
     end tell 
    end tell 
end tell 

月底開放

上運行 - 處理該腳本不帶任何啓動的情況下丟棄的文件 開放(選擇使用多選文件允許) 運行結束

如果您有任何見解我更它並欣賞。 再次感謝 馬特

回答

2

您可以嵌套重複循環。這不是問題,它一直都在做。你只需要從你的第一個重複循環中定義一個不同的迭代變量。在你的情況下,我會使用j

至於將所有的顏色都放到一個列表中,您需要在第一次重複循環之外定義colorList。這樣它在每次迭代過程中都不會被覆蓋。

該大綱是:

on open these_items 
    set colorList to "" 
    repeat with i from 1 to the count of these_items 
     -- [ Get swatches from the document ] 
     repeat with j from 1 to (count allSwatches) 
      -- [ Process your swatches ] 
      set colorList to colorList & swatchItem 
     end repeat 
    end repeat 
end open 
+0

謝謝你這麼多,我真的很感謝你抽出時間回答我的問題,希望我能回報的青睞! – user2888149

+0

@ user2888149 - upvote答案,並將其標記爲接受的答案。這就是你如何感謝回答者:) –