Simple hide a layer script need help
Hi,
This will be an easy one for someone. I’m new to scripting so please be patient. All I need to do is have a script that hide a layer named "L2_NonTranslatedParts". I have tried to piece together some code but I have failed. Can anyone help? I'm also not sure why we are defineing "watermark" as a var. It was in the code I cut up.
var myDoc = app.documents.item(0);
var L2_NonTranslatedParts = "Watermark";
try{app.activeDocument.layers.item(L2_NonTranslatedParts).visible = false;}
catch(_){alert("Can't find layer: " + L2_NonTranslatedParts);exit();};
Yes, that is a good question. Really
app.activeDocument.layers.item("L2_NonTranslatedParts").visible = false;
should be sufficient.
Similar Messages
-
Indesign CS5.5 Relink Script needs help
Hi, I'm trying to relink images in an InDesign CS5.5 file to a different server using a script. This is what I have so far, but when I run the script I get errors and can't relink because "Either the file does not exist, you do not have permission, or the file may be in use by another application". Does anyone know how to make this script work? I'm fairly new to scripting.
Here is the script I have:
tell application "Adobe InDesign CS5.5"
tell document 1
set linkList to links
set errInfo to "" -- We'll display error if we can't relink an item
repeat with x in linkList
if (x's status) is not normal then -- I usually check for any link that has an error
-- This should only return an AppleScript path with ":" separators
set linkPath to (x's file path) as string
if "Volumes/Calendars_2013 FPO" is in linkPath then
set AppleScript's text item delimiters to "Volumes/Calendars_2013 FPO"
set linkPath to (linkPath's text items) -- Create a list of text items
set AppleScript's text item delimiters to "Volumes/Calendars_2013"
set linkPath to (linkPath as string) -- Concatenate with new path
set AppleScript's text item delimiters to "" -- Reset TIDs
try
-- Need to make our string (path) into an alias path
relink x to alias linkPath
try
update x -- This can be helpful
end try
on error err
-- We'll store link name if error occurs
set errInfo to (errInfo & return & x's name)
end try
end if
end if
end repeat
-- If an error occurs while trying to relink, we'll display it
if (count errInfo) > 0 then display dialog ("Can't relink:" & errInfo)
end tell
end tell
--HectorI just tried adding collens to the end of the folder path. For some reason the script skipped the relink line. Below is the code with your update. I'm thinking its not finding the images because the script needs to make a list of all the images and choose the one that matches the missing image.
tell application "Adobe InDesign CS5.5"
tell document 1
set linkList to links
set errInfo to "" -- We'll display error if we can't relink an item
repeat with x in linkList
if (x's status) is not normal then -- I usually check for any link that has an error
-- This should only return an AppleScript path with ":" separators
set linkPath to (x's file path) as string
if "Calendars_2013 FPO:" is in linkPath then
set AppleScript's text item delimiters to "Calendars_2013 FPO:"
set linkPath to (linkPath's text items) -- Create a list of text items
set AppleScript's text item delimiters to "Calendars_2013:"
set linkPath to (linkPath as string) -- Concatenate with new path
set AppleScript's text item delimiters to "" -- Reset TIDs
try
-- Need to make our string (path) into an alias path
relink x to alias linkPath
try
update x -- This can be helpful
end try
on error err
-- We'll store link name if error occurs
set errInfo to (errInfo & return & x's name)
end try
end if
end if
end repeat
-- If an error occurs while trying to relink, we'll display it
if (count errInfo) > 0 then display dialog ("Can't relink:" & errInfo)
end tell
end tell
--Thanks for you help -
Newbie at Illustrator scripting needs help assigning image
I am trying to copy a graphic stored in a vb.net picturebox.image into an activeLayer of an illustrator document. Can anyone supply me with code as to how to do it. Also is there a way to lookup a swatch by name and not have to rely on knowing it's index as in this line of code : pathRef.StrokeColor = docRef.Swatches(3).Color. I know the swatch's name is "CutContour" I would like to assign it by name. And lastly does anybody know any good books, links, etc.. that show you how to do this kind of stuff.
Thanks,
Bruce
Imports IDAutomation.Windows.Forms.LinearBarCode
Imports Illustrator
Public Class FormMain
Dim barcode As IDAutomation.Windows.Forms.LinearBarCode.Barcode = New Barcode()
Dim illustrator As Illustrator.Application = CreateObject("Illustrator.Application")
Dim filePath As String = My.Application.Info.DirectoryPath
Private Sub FormMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
barcode.SymbologyID = barcode.Symbologies.Code39Ext
barcode.BarHeightCM = 1
barcode.XDimensionCM = 0.03
barcode.NarrowToWideRatio = 2
barcode.LeftMarginCM = 0.201
barcode.TopMarginCM = 0.201
barcode.TextMarginCM = 0.051
barcode.ShowText = False
barcode.CaptionBottomAlignment = StringAlignment.Center
barcode.CaptionBottomSpace = 0.03
Dim barcodeText As String = "CODE39UPC" 'hard code barcode content for this test
barcode.DataToEncode = "*" + barcodeText + "*"
barcode.CaptionBelow = barcodeText
PictureBox1.Image = barcode.BMPPicture 'Display Barcode
barcode.SaveImageAs(".\upc.png", System.Drawing.Imaging.ImageFormat.Png)
Dim fileName As String = filePath + "\Roland VersaWorks.eps"
Try
illustrator.Open(fileName)
Catch err As Exception
MsgBox("Missing File: " + fileName)
illustrator.Quit()
Me.Close()
End Try
Dim docRef As Illustrator.Document = illustrator.ActiveDocument
Dim pathRef As Illustrator.PathItem = docRef.ActiveLayer.PathItems.Rectangle(100, 0, 300, 100)
pathRef.StrokeColor = docRef.Swatches(3).Color 'Set strokeColor to CutContour Swatch
pathRef.Filled = False ' Don't Fill rectangle with anything
docRef.ActiveLayer = docRef.Layers(2) 'Activate UPC Layer
'############## I need to copy PictureBox1.image into this activeLayer! How do I do it? ###########
Dim epsOptions As Illustrator.EPSSaveOptions = CreateObject("Illustrator.EPSSaveOptions")
epsOptions.CMYKPostScript = True
docRef.SaveAs(filePath + "\test.eps", epsOptions)
illustrator.Quit()
Me.Close()
End Sub
End ClassHi,
Hodge-Podge wrote:
Also is there a way to lookup a swatch by name and not have to rely on knowing it's index as in this line of code : pathRef.StrokeColor = docRef.Swatches(3).Color. I know the swatch's name is "CutContour" I would like to assign it by name.
I have no knowledge in VB, but in javascript
it should be called by:
var mySwatche=app.activeDocument.swatches.getByName("CutContour");
Regarding how to copy, i guess that you can load picture as raster / placed items or cut() & paste()... it's just ideas,
Sorry, art.chrome -
OMB Script: Need help to spot what's wrong
I have been trying to find out why the outer foreach loop in the following OMB script (log follows) doesn't go to the next iteration. It just exits after getting the lineage for the first target table (i.e., stderr has nothing). Same behavior against different modules. I am too new to Tcl to know what debugging tool is at my disposal. Any help will be appreciated:
set OMBLOG c:/temp/Lineage.tcl.log
# connect to the OWB repository
OMBCONNECT xxx/xxx@xxx:1521:xxx USE REPOSITORY 'OWB_REP_OWN';
# change context to the module
OMBCC 'xxx/xxx/xxx';
set tableList {}
set tableList [OMBLIST TABLES '.*_FINAL']
set i 1
foreach tableName $tableList {
set columnList {}
set columnList [OMBRETRIEVE TABLE '$tableName' GET COLUMNS]
set j 1
foreach columnName $columnList {
OMBLINEAGE DEPENDENCYTYPE 'DATAFLOW' TABLE '$tableName' COLUMN '$columnName';
incr j
incr i
OMBDISCONNECT;
The first few lines on the log are:
OMBLIST TABLES '.*_FINAL'
AE_FINAL CM_FINAL CO_FINAL DA_FINAL DM_FINAL DP_FINAL DS_FINAL DV_FINAL EG_FINAL EX_FINAL IE_FINAL LB_FINAL LS_FINAL MH_FINAL ML_FINAL PC_FINAL PE_FINAL PP_FINAL PR_FINAL QS_FINAL RELREC_FINAL RS_FINAL SC_FINAL SG_FINAL SS_FINAL SUPPAE_FINAL SUPPDS_FINAL SUPPMH_FINAL SUPPPE_FINAL SUPPQUAL_FINAL SU_FINAL VS_FINAL
OMBRETRIEVE TABLE 'AE_FINAL' GET COLUMNS
STUDYID DOMAIN USUBJID AESEQ AEGRPID AEREFID AESPID AETERM AEMODIFY AEDECOD AECAT AESCAT AEOCCUR AEBODSYS AELOC AESEV AESER AEACN AEACNOTH AEREL AERELNST AEPATT AEOUT AESCAN AESCONG AESDISAB AESDTH AESHOSP AESLIFE AESOD AESMIE AECONTRT AETOXGR AESTDTC AEENDTC AESTDY AEENDY AEDUR AEENRF VISITNUM VISIT OCTA_SEQ
OMBLINEAGE DEPENDENCYTYPE 'DATAFLOW' TABLE 'AE_FINAL' COLUMN 'STUDYID'
{{COLUMN /xxx/xxx_C0402_DEV/AE_AE_INTERIM/STUDYID} {MAPPING /xxx/xxx_C0402_DEV/AE_FINAL_MAP} {COLUMN /xxx/xxx_C0402_DEV/AE_FINAL/STUDYID}} {{ATTRIBUTE /xxx/AE_AE_PM/PROT} {MAPPING /xxx/xxx_C0402_DEV/AE_INTERIM_MAP} {COLUMN /xxx/xxx_C0402_DEV/AE_AE_INTERIM/STUDYID}} {{COLUMN /xxx/xxx_C0402_DEV/AE_SOURCE/PROT} {MAPPING /xxx/xxx_C0402_DEV/AE_INTERIM_MAP} {COLUMN /xxx/xxx_C0402_DEV/AE_AE_INTERIM/STUDYID}} {{ATTRIBUTE /xxx/AE_AE_PM/PROT} {MAPPING /xxx/xxx_C0402_DEV/AE_INTERIM_MAP} {COLUMN /xxx/xxx_C0402_DEV/AE_AE_INTERIM/STUDYID}} {{COLUMN /xxx/xxx_C0402_DEV/AE_SOURCE/PROT} {MAPPING /xxx/xxx_C0402_DEV/AE_INTERIM_MAP} {COLUMN /xxx/xxx_C0402_DEV/AE_AE_INTERIM/STUDYID}} {{ATTRIBUTE /xxx/AE_AE_PM/PROT} {MAPPING /xxx/xxx_C0402_DEV/AE_INTERIM_MAP} {COLUMN /xxx/xxx_C0402_DEV/AE_AE_INTERIM/STUDYID}} {{COLUMN /xxx/xxx_C0402_DEV/AE_SOURCE/PROT} {MAPPING /xxx/xxx_C0402_DEV/AE_INTERIM_MAP} {COLUMN /xxx/xxx_C0402_DEV/AE_AE_INTERIM/STUDYID}} {{COLUMN /xxx/xxx_DEV/AE_SOURCE/PROT} {MAPPING /xxx/xxx_DEV/AE_INTERIM_MAP} {ATTRIBUTE /xxx/AE_AE_PM/PROT}}I haven't looked in too much detail, but I think you are missing some brackets. You need to close brackets before you increment the loop. Try:
foreach columnName $columnList {
OMBLINEAGE DEPENDENCYTYPE 'DATAFLOW' TABLE '$tableName' COLUMN '$columnName';}
incr j
You will need to do the same thing at the other points in your script. -
Hi Everyone,
I'm trying to get a simple task scheduler script to work for me and can't get the command I need passed to the scheduler to evaluate properly.
Here's the script:
###Create a new task running $Command and execute it Daily at 6am.
$TaskName = Read-Host 'What would you like this job to be named?'
$Proto = Read-Host 'What is the protocol? (FTP/FTPS/SFTP)'
$User = Read-Host 'What is the user name?'
$Pwd = Read-Host 'What is the password?'
$Server = Read-Host 'What is the server address?'
$NetworkDir = Read-Host 'Please input the network location of the file(s) you wish to send. Refer to documentation for more details.'
$RemoteDir = Read-Host 'Please input the REMOTE directory to which you will upload your files. If there is none please input a slash'
$Command = 'winscp.com /command "option batch abort" "option confirm off" "open $Proto://$User:$Pwd@$Server" "put $NetworkDir $RemoteDir" "exit"'
$TaskAction = New-ScheduledTaskAction -Execute "$Command"
$TaskTrigger = New-ScheduledTaskTrigger -Daily -At 6am
Register-ScheduledTask -Action $TaskAction -Trigger $Tasktrigger -TaskName "$TaskName" -User "Administrator" -RunLevel Highest
Write-Host "$TaskName created to run Daily at $TaskStartTime"
What's messing up is the $Command creation, the command needs to have the quotes around "option blah blah", but if I wrap the whole line in single quotes the variables that are evaluated for the "open blah blah" strings (which also need
to be inside quotes) and the "put blah blah" string are not being evaluated properly.
I've dorked about with different bracketing and quoting but can't nail the syntax down, could someone point me in the right direction? My Google-fu seems to be lacking when it comes to nailing down this issue.
ThanksHmmn, closer. I'm getting this error now:
+ $Command = $tmpl -f $User, $Pwd, $Server, $NetworkDir, $RemoteDir
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (winscp.com /com...t {4} {5}" exit:String) [], RuntimeException
+ FullyQualifiedErrorId : FormatError
And the command being added to the new task looks like this:
winscp.com /command "option batch abort" "option confirm off" "open ($Proto)://($User):($Pwd)@($Server)" "put $NetworkDir $RemoteDir" "exit"
Here's the current state of the script. I get what you're doing to try to bypass the quotes issue, using an array. I'm just not awesome at this yet sooooooo...
$TaskName = Read-Host 'What would you like this job to be named?'
$Proto = Read-Host 'What is the protocol? (FTP/FTPS/SFTP)'
$User = Read-Host 'What is the user name?'
$Pwd = Read-Host 'What is the password?'
$Server = Read-Host 'What is the server address?'
$NetworkDir = Read-Host 'Please input the network location of the file(s) you wish to send. Refer to documentation for more details.'
$RemoteDir = Read-Host 'Please input the REMOTE directory to which you will upload your files. If there is none please input a slash'
$tmpl = 'winscp.com /command "option batch abort" "option confirm off" "open {0}://{1}:{2}@{3}" "put {4} {5}" exit'
$Command = $tmpl -f $User, $Pwd, $Server, $NetworkDir, $RemoteDir
$TaskAction = New-ScheduledTaskAction -Execute $Command
$TaskTrigger = New-ScheduledTaskTrigger -Daily -At 6am
Register-ScheduledTask -Action $TaskAction -Trigger $Tasktrigger -TaskName "$TaskName" -User "Administrator" -RunLevel Highest
Write-Host "$TaskName created to run Daily at $TaskStartTime" -
Hello everyone! First of all, sorry for my english... I'm Brazilian and english is not my first language.
This is my first post meant to be my first post and I'm learning AS3. Didn't know about this forum but now I hope to have the time to visit it a lot to help and be helped! =)
Well, I'm trying to import some external files to my main flash file with buttons. Yes, this is a newbie question, but I'm learning... I click button 1 and content 1 is loaded, click button 2 and content 2 is loaded, and so on. So, I got two ways for doing it:
edit: The code below is working fine now...
montreal.addEventListener(MouseEvent.MOUSE_UP, loadCity);
dublin.addEventListener(MouseEvent.MOUSE_UP, loadCity);
sydney.addEventListener(MouseEvent.MOUSE_UP, loadCity);
var box:MovieClip = new MovieClip();
addChild(box);
box.x=20;
box.y=20;
function loadCity (event:MouseEvent):void {
var currentCity = event.target.name;
// remove all the children of the box
while (box.numChildren > 0) {box.removeChildAt(0);}
var swfRequest:URLRequest=new URLRequest(currentCity+".swf");
var swfLoader:Loader = new Loader();
swfLoader.load(swfRequest);
box.addChild(swfLoader);}
The problem with this first option is that whenever I click a button, it don't renew the content of the "box"... instead, the content loaded is stacked over the last one and I don't know how to clean it... The user Andrei did the trick with the "while statement" so the above code is working but I don't know how to use tween with it...
So here comes the second option:
import fl.transitions.Tween;
import fl.transitions.easing.*;
montreal.buttonMode=true;
dublin.buttonMode=true;
sydney.buttonMode=true;
rio.buttonMode=true;
paris.buttonMode=true;
london.buttonMode=true;
home.buttonMode=true;
var box:MovieClip = new MovieClip();
addChild(box);
box.x=20;
box.y=20;
var cityLoader:Loader = new Loader();
var cityURL:URLRequest=new URLRequest("montreal.swf"); //I use this to show a city when the site is opened
cityLoader.load(cityURL);
box.addChild(cityLoader);
**Here I add the listeners to button, each one calling its own function like:
montreal.addEventListener(MouseEvent.CLICK, loadMontreal);
function cityTweens():void {
var cityIn:Tween = new Tween(box, "y", Strong.easeOut, -350, 20, 1, true);}
function loadMontreal(event:MouseEvent):void {
var cityURL:URLRequest=new URLRequest("montreal.swf");
cityLoader.load(cityURL);
cityTweens();}
function loadDublin(event:MouseEvent):void {
var cityURL:URLRequest=new URLRequest("dublin.swf");
cityLoader.load(cityURL);
cityTweens();}
function loadSydney(event:MouseEvent):void {
var cityURL:URLRequest=new URLRequest("sydney.swf");
cityLoader.load(cityURL);
cityTweens();}
function loadRio(event:MouseEvent):void {
var cityURL:URLRequest=new URLRequest("rio.swf");
cityLoader.load(cityURL);
cityTweens();}
function loadParis(event:MouseEvent):void {
var cityURL:URLRequest=new URLRequest("paris.swf");
cityLoader.load(cityURL);
cityTweens();}
function loadLondon(event:MouseEvent):void {
var cityURL:URLRequest=new URLRequest("london.swf");
cityLoader.load(cityURL);
cityTweens();}
function loadHome(event:MouseEvent):void {
var cityURL:URLRequest=new URLRequest("home.swf");
cityLoader.load(cityURL);
cityTweens();}
Well, the second option "is" working but I have some problems with the Tween... I have to wait the tween to finish before clicking another button or the tween will bug... I don't know how to disable the buttons until the tween is finished =/
Now, I used to have one tween for each function but now I got it inside a function and just call it inside each function. Simple for you but I was like WOW when I had the idea and put it to practice! But I'm still repeating a lot of codes here with the "cityLoader.load(cityURL);" but when I try to put it inside the function "cityTweens" it will just open the Montreal City, maybe because I'm calling it as soon as the site opens...
I'm almost sure I can make things simple, like mixing the idea of the first code (currentCity+".swf") so I don't need to call a function for each button. I just don't know how to do it...
Could anyone help me? I'll also be VERY happy if you point me to any tip like good practices that I'm not following.
Thanks in advance!
Message was edited by: newToAS3As I said in your previous post, removing the child would not do the trick. Technically, you need to remove it after the tween is finished.
In any case there are several issues with how you approach the whole thing. First of all, if you target your application to be on Internet - swf loading will not happen instantly - thus you, perhaps, need to consider waiting for swfs to be loaded before you doing anything with them. But if you just do it on local machine - you don't really need for them to show up. On the other hand, even with local environment it makes sense to take into account asynchronous/unpredicatable nature of external file loading.
Also, your code can be more comact and the same functionality delegated to a single function. The code below demonstrates one of the ways. This is not the bes way though because it forces to load objects again although they were loaded already. But this is another story. I did not check code in action, of course (this is just an idea) - it is up to your to work out bugs:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.events.Event;
montreal.buttonMode = true;
dublin.buttonMode = true;
sydney.buttonMode = true;
rio.buttonMode = true;
paris.buttonMode = true;
london.buttonMode = true;
home.buttonMode = true;
var box:MovieClip = new MovieClip();
addChild(box);
box.x=20;
box.y=20;
var cityLoader:Loader = new Loader();
// this line will allow to wait untill content is loaded
cityLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
var cityURL:URLRequest = new URLRequest("montreal.swf"); //I use this to show a city when the site is opened
cityLoader.load(cityURL);
// don't need the following line
// box.addChild(cityLoader);
// make it a single listener
montreal.addEventListener(MouseEvent.CLICK, loadSWF);
dublin.addEventListener(MouseEvent.CLICK, loadSWF);
sydney.addEventListener(MouseEvent.CLICK, loadSWF);
rio.addEventListener(MouseEvent.CLICK, loadSWF);
paris.addEventListener(MouseEvent.CLICK, loadSWF);
london.addEventListener(MouseEvent.CLICK, loadSWF);
home.addEventListener(MouseEvent.CLICK, loadSWF);
// the single function handles all the loading
function loadSWF(e:MouseEvent):void {
switch(e.currentTarget) {
case montreal:
cityURL = new URLRequest("montreal.swf");
break;
case dublin:
cityURL = new URLRequest("dublin.swf");
break;
case sydney:
cityURL = new URLRequest("sydney.swf");
break;
case rio:
cityURL = new URLRequest("rio.swf");
break;
case paris:
cityURL = new URLRequest("paris.swf");
break;
case london:
cityURL = new URLRequest("london.swf");
break;
case home:
cityURL = new URLRequest("home.swf");
break;
cityLoader.load(cityURL);
function onLoadComplete(e:Event):void {
loadedContent = e.target.content;
// assuming that previous content will be moved out -
// place new content behind previous one
box.addChildAt(e.target.content, 0);
// now you can start tweening
// if there are more than one child
if (box.numChildren > 1) {
cityTweens();
function cityTweens():void {
// tween the topmost object
var cityIn:Tween = new Tween(box.getChildAt(box.numChildren - 1), "y", Strong.easeOut, -350, 20, 1, true);
// wait until motion finished
cityIn.addEventListener(TweenEvent.MOTION_FINISH, tweenFinished);
function tweenFinished(e:TweenEvent):void {
// make Tween instance eligible for arbage collection
e.target.removeEventListener(TweenEvent.MOTION_FINISH, tweenFinished);
// now you can remove tweened object from the box
box.removeChild(e.target.obj);
e.target.obj = null;
Edited some code. -
Working on slug script, need help!
Okay, this is not my script, one that I found online. The script works by allowing the user to set placeholders within the document and tag each placeholder with specific information such as DATE, TIME, FILENAME, etc.
The current placeholders that are setup for this script are:
{FILE}
{FILEPATH}
{FILENAME}
{FILEEXT}
{DATE}
{TIME}
I would like to add a few more placeholders, which is where I need some help. I would like to add a placeholder for the username or hostname, meaning computer name. {HOSTNAME}
I would also like to add a placeholder for colors used in the document listed in this format: PANTONE 186C, PANTONE 281C, BLACK, CYAN, MAGENTA, YELLOW, or as color swatches.
Also, is it possible to create a placeholder that will produce an interface allowing user input? Say you wanted a placeholder for Designer, and a dialog popped up asking for input.
Thanks for any help!
Here is the script:
var language="en"; // "de" fuer Deutsch
var WR="WR-DateAndTime v0.9\n\n";
var AIversion=version.slice(0,2);
if (language == "de") {
var format_preset = "{FILENAME}{FILEEXT} ({DATE} - {TIME})";
var MSG_unsetmark = WR+"Dieses Objekt ist als aktuelles Datum/Uhrzeit markiert, soll die Markierung aufgehoben werden?";
var MSG_setmark = WR+"Soll dieses Textobjekt als aktuelles Datum/Uhrzeit markiert werden?";
var MSG_askformat = WR+"Soll das Textobjekt als Datum/Uhrzeit formatiert werden? Formate:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} und {FILEEXT}:"
var MSG_editformat = WR+"Datums-/Uhrzeitformat bearbeiten (Leer = entfernen). Formate:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} und {FILEEXT}:"
var MSG_notexto = WR+"Kein Textobjekt!";
var MSG_selectedmany = "Zum Markieren als aktuelles Datum/Uhrzeit darf nur ein Textobjekt ausgew\xE4hlt sein und falls Sie die Daten aktualisieren wollen, darf kein Objekt ausgew\xE4hlt sein.";
var MSG_nodocs = WR+"Kein Dokument ge\xF6ffnet."
var Timeformat = 24;
var TimeSep = ":";
var AM = " am";
var PM = " pm";
var Dateformat = "dd.mm.yyyy";
} else {
var format_preset = "{FILENAME} ({DATE}, {TIME})";
var MSG_unsetmark = WR+"This object is marked as actual date'n'time, do you want to remove the mark?";
var MSG_setmark = WR+"Do you want to mark the selected textobject as actual date'n'time?";
var MSG_askformat = WR+"Do you want to mark the textobject as actual date'n'time? Formats:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} and {FILEEXT}:"
var MSG_editformat = WR+"Edit date'n'time (empty = remove). Formats:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} and {FILEEXT}:"
var MSG_notexto = WR+"No textobject!";
var MSG_selectedmany = "To mark as actual date'n'time, you have to select only one textobject. If you want to update the date'n'time-objects, there must be no object selected.";
var MSG_nodocs = WR+"You have no open document."
var Timeformat = 12;
var TimeSep = ":";
var AM = " am";
var PM = " pm";
var Dateformat = "mm/dd/yyyy";
var error=0;
if (documents.length<1) {
error++;
alert(MSG_nodocs)
if (error < 1) {
date_n_time();
function TodayDate()
var Today = new Date();
var Day = Today.getDate();
var Month = Today.getMonth() + 1;
var Year = Today.getYear();
var PreMon = ((Month < 10) ? "0" : "");
var PreDay = ((Day < 10) ? "0" : "");
if(Year < 999) Year += 1900;
var theDate = Dateformat.replace(/dd/,PreDay+Day);
theDate = theDate.replace(/mm/,PreMon+Month);
theDate = theDate.replace(/d/,Day);
theDate = theDate.replace(/m/,Month);
theDate = theDate.replace(/yyyy/,Year);
theDate = theDate.replace(/yy/,Year.toString().substr(2,2));
return theDate;
function TodayTime()
var Today = new Date();
var Hours = Today.getHours();
var Minutes = Today.getMinutes();
var Suffix = "";
if (Timeformat == 12) {
if (Hours >= 12 ) {
Suffix = PM;
} else {
Suffix = AM;
if (Hours >= 13) {
Hours = Hours - 12;
if (Hours < 1) {
Hours = Hours + 12;
var PreHour = ((Hours < 10) ? "0" : "");
var PreMin = ((Minutes < 10) ? "0" : "");
return PreHour+Hours+TimeSep+PreMin+Minutes+Suffix;
function DateUpdate(Name) {
var docpath = activeDocument.path.fsName;
var docname = activeDocument.name.replace(/(.*?)(?:\.([^.]+))?$/,'$1');
var extension = activeDocument.name.replace(/(.*?)(?:(\.[^.]+))?$/,'$2');
if (docpath.slice(2,3) == "\\") {
docsep = "\\";
} else {
docsep = ":";
var content = Name.slice(11);
var content = content.replace(/\{FILE\}/,docpath+docsep+docname);
var content = content.replace(/\{FILEPATH\}/,docpath);
var content = content.replace(/\{FILENAME\}/,docname);
var content = content.replace(/\{FILEEXT\}/,extension);
var content = content.replace(/\{DATE\}/,TodayDate());
var content = content.replace(/\{TIME\}/,TodayTime());
return content;
function date_n_time()
if (selection.length == 1) {
if (selection[0].typename == "TextArtItem" || selection[0].typename == "TextFrame") {
if (selection[0].name.slice(0,11) == "actualDate:") {
dateformat = selection[0].name.slice(11);
Check = false;
if (AIversion == "10") {
Check = confirm( MSG_unsetmark );
} else {
dateformat = prompt(MSG_editformat, dateformat);
if(dateformat != "" && Check) {
selection[0].contents = selection[0].name.slice(11);
selection[0].name="";
selection[0].selected = false;
if(dateformat == "" && !Check) {
selection[0].name="";
selection[0].selected = false;
if(dateformat && dateformat !="" && !Check) {
selection[0].name="actualDate:"+dateformat;
selection[0].contents = DateUpdate(selection[0].name);
} else {
dateformat = selection[0].contents;
if(dateformat.search(/\{DATE\}/) == -1 && dateformat.search(/\{TIME\}/) == -1 && dateformat.search(/\{FILE[A-Z]*\}/) == -1) dateformat = format_preset;
Check = false;
if (AIversion == "10") {
Check = confirm( MSG_setmark );
} else {
dateformat = prompt(MSG_askformat, dateformat);
if (dateformat || Check) {
selection[0].name="actualDate:"+dateformat;
selection[0].contents = DateUpdate(selection[0].name);
selection[0].selected = false;
} else {
alert ( MSG_notexto );
} else if (selection.length > 1) {
alert ( MSG_selectedmany );
} else {
if (AIversion == "10") {
var textArtItems = activeDocument.textArtItems;
for (var i = 0 ; i < textArtItems.length; i++)
if (textArtItems[i].name.slice(0,11) == "actualDate:") {
textArtItems[i].selected = true;
textArtItems[i].contents = DateUpdate(textArtItems[i].name);
} else {
var textFrames = activeDocument.textFrames;
for (var i = 0 ; i < textFrames.length; i++)
if (textFrames[i].name.slice(0,11) == "actualDate:") {
textFrames[i].selected = true;
textFrames[i].contents = DateUpdate(textFrames[i].name);Okay, here is the entire script with credit lines.
//////////////////////////////////////////////////////////// english //
// -=> WR-DateAndTime <=-
// A Javascript for Adobe Illustrator
// by Wolfgang Reszel ([email protected])
// Version 0.9 from 22.9.2011
// This script inserts the actual date or the actual time to a
// predefined position in the document.
// To define the position, you'll have to create an textobject and
// execute this script while the object is selected. The whole object
// has to be selected and not words or letters. You can mark more
// objects, if you select each object separate and execute
// the script on it.
// With the placeholders {DATE} and {TIME} you are able to define a
// particular point, where the date or the time should be replaced.
// If there is no placeholder in the textobject
// "{FILENAME}{FILEEXT} ({DATE}, {TIME})" will be used as standard placeholders.
// To update the date and time execute this script without any object
// selected.
// There are some additional placeholders:
// {FILE} - complete document-filename with path
// {FILEPATH} - only the documents filepath
// {FILENAME} - the filename of the document
// {FILEEXT} - the file extension of the document inclusive dot
// On my system this script can't see the path of the document, when
// it was opened directly from windows Explorer (double click).
// In Illustrator CS it is now possible to edit a DateAndTime-Object.
// To enable the english messages and date-format change the "de"
// into "en" in line 90.
// Sorry for my bad english. For any corrections send an email to:
// [email protected]
//////////////////////////////////////////////////////////// Deutsch //
// -=> WR-DateAndTime <=-
// Ein Javascript fuer Adobe Illustrator
// von Wolfgang Reszel ([email protected])
// Version 0.9 vom 30.9.2011
// Dieses Skript fuegt das aktuelle Datum und die aktuelle Uhrzeit an
// eine vorher bestimmte Stelle im Dokument ein.
// Um eine Stelle zu bestimmen, muss man ein Textobjekt erzeugen, es
// markieren und dann dieses Skript aufrufen. Es muss das gesamte Objekt
// ausgewaehlt sein, nicht etwa Buchstaben oder Woerter. Es lassen sich
// nacheinander auch mehrere Objekte als Datum/Uhrzeit markieren.
// Mit den Platzhaltern {DATE} und {TIME} (in geschweiften Klammern)
// kann man bestimmen, wo genau im Text das Datum und die Uhrzeit
// erscheinen soll. Sind die Platzhalter nicht vorhanden, wird
// automatisch "{FILENAME}{FILEEXT} ({DATE} - {TIME})" verwendet.
// Zum Aktualisieren des Datums/Uhrzeit muss man dieses Skript aufrufen
// wenn kein Objekt ausgewaehlt ist.
// Es gibt noch einige zusaetzliche Platzhalter:
// {FILE} - kompletter Dateiname mit Pfad
// {FILEPATH} - nur der Verzeichnispfad des Dokuments
// {FILENAME} - der Dateiname des Dokuments
// {FILEEXT} - die Dateiendung des Dokuments inklusive Punkt
// Auf meinem System kann der Pfad nicht ermittelt werden, wenn das
// Dokument vom Windows Explorer geoeffnet wird (Doppel-Klick).
// InÿIllustrator CSÿkann man nun ein Datum/Uhrzeit-Objekt bearbeiten.
// Um dieses Skript mit deutschen Meldungen und Datumsformat zu
// versehen, muss in Zeile 90 das "en" durch ein "de" ersetzt werden.
// Verbesserungsvorschlaege an: [email protected]
//$.bp();
var language="en"; // "de" fuer Deutsch
var WR="WR-DateAndTime v0.9\n\n";
var AIversion=version.slice(0,2);
if (language == "de") {
var format_preset = "{FILENAME}{FILEEXT} ({DATE} - {TIME})";
var MSG_unsetmark = WR+"Dieses Objekt ist als aktuelles Datum/Uhrzeit markiert, soll die Markierung aufgehoben werden?";
var MSG_setmark = WR+"Soll dieses Textobjekt als aktuelles Datum/Uhrzeit markiert werden?";
var MSG_askformat = WR+"Soll das Textobjekt als Datum/Uhrzeit formatiert werden? Formate:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} und {FILEEXT}:"
var MSG_editformat = WR+"Datums-/Uhrzeitformat bearbeiten (Leer = entfernen). Formate:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} und {FILEEXT}:"
var MSG_notexto = WR+"Kein Textobjekt!";
var MSG_selectedmany = "Zum Markieren als aktuelles Datum/Uhrzeit darf nur ein Textobjekt ausgew\xE4hlt sein und falls Sie die Daten aktualisieren wollen, darf kein Objekt ausgew\xE4hlt sein.";
var MSG_nodocs = WR+"Kein Dokument ge\xF6ffnet."
var Timeformat = 24;
var TimeSep = ":";
var AM = " am";
var PM = " pm";
var Dateformat = "dd.mm.yyyy";
} else {
var format_preset = "{FILENAME} ({DATE}, {TIME})";
var MSG_unsetmark = WR+"This object is marked as actual date'n'time, do you want to remove the mark?";
var MSG_setmark = WR+"Do you want to mark the selected textobject as actual date'n'time?";
var MSG_askformat = WR+"Do you want to mark the textobject as actual date'n'time? Formats:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} and {FILEEXT}:"
var MSG_editformat = WR+"Edit date'n'time (empty = remove). Formats:\n{DATE}, {TIME}, {FILE}, {FILEPATH}, {FILENAME} and {FILEEXT}:"
var MSG_notexto = WR+"No textobject!";
var MSG_selectedmany = "To mark as actual date'n'time, you have to select only one textobject. If you want to update the date'n'time-objects, there must be no object selected.";
var MSG_nodocs = WR+"You have no open document."
var Timeformat = 12;
var TimeSep = ":";
var AM = " am";
var PM = " pm";
var Dateformat = "mm/dd/yyyy";
var error=0;
if (documents.length<1) {
error++;
alert(MSG_nodocs)
if (error < 1) {
date_n_time();
function TodayDate()
var Today = new Date();
var Day = Today.getDate();
var Month = Today.getMonth() + 1;
var Year = Today.getYear();
var PreMon = ((Month < 10) ? "0" : "");
var PreDay = ((Day < 10) ? "0" : "");
if(Year < 999) Year += 1900;
var theDate = Dateformat.replace(/dd/,PreDay+Day);
theDate = theDate.replace(/mm/,PreMon+Month);
theDate = theDate.replace(/d/,Day);
theDate = theDate.replace(/m/,Month);
theDate = theDate.replace(/yyyy/,Year);
theDate = theDate.replace(/yy/,Year.toString().substr(2,2));
return theDate;
function TodayTime()
var Today = new Date();
var Hours = Today.getHours();
var Minutes = Today.getMinutes();
var Suffix = "";
if (Timeformat == 12) {
if (Hours >= 12 ) {
Suffix = PM;
} else {
Suffix = AM;
if (Hours >= 13) {
Hours = Hours - 12;
if (Hours < 1) {
Hours = Hours + 12;
var PreHour = ((Hours < 10) ? "0" : "");
var PreMin = ((Minutes < 10) ? "0" : "");
return PreHour+Hours+TimeSep+PreMin+Minutes+Suffix;
function DateUpdate(Name) {
var docpath = activeDocument.path.fsName;
var docname = activeDocument.name.replace(/(.*?)(?:\.([^.]+))?$/,'$1');
var extension = activeDocument.name.replace(/(.*?)(?:(\.[^.]+))?$/,'$2');
if (docpath.slice(2,3) == "\\") {
docsep = "\\";
} else {
docsep = ":";
var content = Name.slice(11);
var content = content.replace(/\{FILE\}/,docpath+docsep+docname);
var content = content.replace(/\{FILEPATH\}/,docpath);
var content = content.replace(/\{FILENAME\}/,docname);
var content = content.replace(/\{FILEEXT\}/,extension);
var content = content.replace(/\{DATE\}/,TodayDate());
var content = content.replace(/\{TIME\}/,TodayTime());
return content;
function date_n_time()
if (selection.length == 1) {
if (selection[0].typename == "TextArtItem" || selection[0].typename == "TextFrame") {
if (selection[0].name.slice(0,11) == "actualDate:") {
dateformat = selection[0].name.slice(11);
Check = false;
if (AIversion == "10") {
Check = confirm( MSG_unsetmark );
} else {
dateformat = prompt(MSG_editformat, dateformat);
if(dateformat != "" && Check) {
selection[0].contents = selection[0].name.slice(11);
selection[0].name="";
selection[0].selected = false;
if(dateformat == "" && !Check) {
selection[0].name="";
selection[0].selected = false;
if(dateformat && dateformat !="" && !Check) {
selection[0].name="actualDate:"+dateformat;
selection[0].contents = DateUpdate(selection[0].name);
} else {
dateformat = selection[0].contents;
if(dateformat.search(/\{DATE\}/) == -1 && dateformat.search(/\{TIME\}/) == -1 && dateformat.search(/\{FILE[A-Z]*\}/) == -1) dateformat = format_preset;
Check = false;
if (AIversion == "10") {
Check = confirm( MSG_setmark );
} else {
dateformat = prompt(MSG_askformat, dateformat);
if (dateformat || Check) {
selection[0].name="actualDate:"+dateformat;
selection[0].contents = DateUpdate(selection[0].name);
selection[0].selected = false;
} else {
alert ( MSG_notexto );
} else if (selection.length > 1) {
alert ( MSG_selectedmany );
} else {
if (AIversion == "10") {
var textArtItems = activeDocument.textArtItems;
for (var i = 0 ; i < textArtItems.length; i++)
if (textArtItems[i].name.slice(0,11) == "actualDate:") {
textArtItems[i].selected = true;
textArtItems[i].contents = DateUpdate(textArtItems[i].name);
} else {
var textFrames = activeDocument.textFrames;
for (var i = 0 ; i < textFrames.length; i++)
if (textFrames[i].name.slice(0,11) == "actualDate:") {
textFrames[i].selected = true;
textFrames[i].contents = DateUpdate(textFrames[i].name); -
[AS] Beast of a script needs help converting from Quark 8 to InDesign CS5
First off, THANK YOU for even reading this post. Here's the dilema. I work in a publishing company that used an AppleScript from Quark 8 to automate our pagination from set text we pull from our sales reps worksheets. About 8 months ago we switched fully to InDesign CS5, but have had to hold onto Quark 8 to be able to keep running our pagination. I'd like to see if the geniuses (yes, I've been trolling these forums looking to solve this myself and seen some great problems fixed) on these forums can help me figure out the proper conversion I would need to be able to leave Quark 8 in the rearview.
Here's our current code... (I warned you it was a beast)
set Ad_Props to {¬
{Ad_Label:"SPREAD – ", Ad_Width:2.495, Ad_Height:1.62, Ad_Text_Angle:0}, ¬
{Ad_Label:"FULL – ", Ad_Width:1.225, Ad_Height:1.62, Ad_Text_Angle:0}, ¬
{Ad_Label:"SPREAD – ", Ad_Width:2.495, Ad_Height:1.62, Ad_Text_Angle:0}, ¬
{Ad_Label:"JUNIOR – ", Ad_Width:0.90625, Ad_Height:1.62, Ad_Text_Angle:0}, ¬
{Ad_Label:"1/2H – ", Ad_Width:1.225, Ad_Height:0.785, Ad_Text_Angle:0}, ¬
{Ad_Label:"1/2V – ", Ad_Width:0.5875, Ad_Height:1.62, Ad_Text_Angle:90}, ¬
{Ad_Label:"1/3V – ", Ad_Width:0.5875, Ad_Height:1.2025, Ad_Text_Angle:90}, ¬
{Ad_Label:"1/4 – ", Ad_Width:0.5875, Ad_Height:0.785, Ad_Text_Angle:0}, ¬
{Ad_Label:"1/4 Strip – ", Ad_Width:0.26875, Ad_Height:1.62, Ad_Text_Angle:90}, ¬
{Ad_Label:"1/8H – ", Ad_Width:0.5875, Ad_Height:0.3675, Ad_Text_Angle:0}, ¬
{Ad_Label:"1/8V – ", Ad_Width:0.26875, Ad_Height:0.785, Ad_Text_Angle:90}, ¬
{Ad_Label:"Junior (GOLF) – ", Ad_Width:0.8, Ad_Height:1.62, Ad_Text_Angle:0}, ¬
{Ad_Label:"1/3V (GOLF) – ", Ad_Width:0.375, Ad_Height:1.62, Ad_Text_Angle:90}, ¬
{Ad_Label:"1/3sq. (GOLF) – ", Ad_Width:0.8, Ad_Height:0.785, Ad_Text_Angle:0}, ¬
{Ad_Label:"1/6V (GOLF) – ", Ad_Width:0.375, Ad_Height:0.785, Ad_Text_Angle:90}, ¬
{Ad_Label:"Directory Listing Only – ", Ad_Width:0.3, Ad_Height:0.3, Ad_Text_Angle:0}, ¬
{Ad_Label:"INSERT (# in notes) – ", Ad_Width:0.3, Ad_Height:0.3, Ad_Text_Angle:0}, ¬
{Ad_Label:"Other (See Notes) – ", Ad_Width:0.3, Ad_Height:0.3, Ad_Text_Angle:0}, ¬
{Ad_Label:"------------ – ", Ad_Width:0.3, Ad_Height:0.3, Ad_Text_Angle:0}}
set Position_Width to number
set Position_Width to 11.375
set Position_Height to number
set Position_Height to 1.875
set Jump_Height to number
set Jump_Height to 0
set Variable_Count to number
set Variable_Count to 0
set Variable_Height to number
set Variable_Height to (1.875 + (1.62 * Variable_Count))
set Last_Ad to number
set Last_Ad to 0
tell application "QuarkXPress"
activate
try
display dialog "WARNING: This version of 'Dummy Square Maker' runs much slower than the last version, a confirmation will tell you when you are finished. Please be patient." & return & return & "Make sure to have the text box selected" buttons {"Cancel", "Accept"} default button 2 with icon caution
set ThisBox to object reference of current box
tell story 1 of ThisBox
set (every paragraph where it is return) to ""
set style sheet of every text to null
set style sheet of every text to "DUMMY TEXTS"
repeat with i from 1 to (count of paragraphs)
try
tell paragraph i
set ThePage to my get_CurrentPage()
try
if it contains " – " then
set style sheet to "AD SIZE"
set Ad_Size to contents
set {This_Width, This_Height, this_angle} to {"", "", ""}
repeat with This_Ad in Ad_Props
if Ad_Size contains (Ad_Label of This_Ad) then
set This_Width to Ad_Width of This_Ad
set This_Height to Ad_Height of This_Ad
set this_angle to Ad_Text_Angle of This_Ad
exit repeat
end if
end repeat
set Ad_Box to my Make_Box(ThePage, {1.875, 10.875, This_Height + 1.875, This_Width + 10.875}, this_angle)
duplicate contents to (end of Ad_Box)
else if it contains "—" then
set style sheet to "AD REP/PLACEMENT"
duplicate contents to (end of Ad_Box)
else if it starts with "©" then
set style sheet to "AD REP/PLACEMENT"
delete (character 1)
duplicate contents to end of Ad_Box
if Position_Width ≤ 19.75 then
set Jump_Height to Jump_Height + This_Height
(*_________________This is where Ad Boxes Stack_________________*)
if (Jump_Height ≤ 1.62) then
set origin of bounds of Ad_Box to {Position_Height, Position_Width}
set Position_Height to Position_Height + This_Height
(*_________________This is where Ad Boxes more right_________________*)
else
set Position_Height to Variable_Height
(*set Position_Width to Position_Width + This_Width + 0.05*)
set Position_Width to Position_Width + Last_Ad + 0.05
set origin of bounds of Ad_Box to {Position_Height, Position_Width}
set Jump_Height to This_Height
set Position_Height to Variable_Height + This_Height
end if
set Last_Ad to This_Width
(*_________________This is where New Row appears_________________*)
else
set Position_Width to 11.375
set Variable_Count to Variable_Count + 1
set Variable_Height to (1.875 + (1.62 * Variable_Count))
set Position_Height to Variable_Height
set origin of bounds of Ad_Box to {Position_Height, Position_Width}
set Position_Height to Position_Height + This_Height
set Jump_Height to This_Height
set Last_Ad to This_Width
end if
else
duplicate contents to (end of Ad_Box)
end if
end try
end tell
on error errmsg number errnum
display dialog "There has been an error " & "[" & i & "] (" & errmsg & " [" & errnum & "])" buttons {"Okay"} default button 1 with icon stop
end try
end repeat
delete contents
set style sheet of every text to null
end tell
beep 2
display dialog "Automation Finished" & return & return & "IMPORTANT NOTE: Color your Ad Squares according to Sales Rep, and select them all and 'BRING TO FRONT [F5]', this is VITAL." buttons {"Okay"} default button 1 with icon stop
on error errmsg number errnum
beep 3
if errnum ≠ -128 then
beep
display dialog errmsg & " [" & errnum & "]" buttons {"OK"} default button 1 with icon stop
end if
end try
end tell
on Make_Box(ThePage, TheBounds, this_angle)
local ThePage, TheBounds, this_angle
tell application "QuarkXPress"
tell page ThePage of document 1
set Ad_Box to make new text box at end with properties {bounds:TheBounds, vertical justification:centered, color:"Rep_Other", shade:100, opacity:10, text angle:this_angle, frame:{style:solid line, color:"Black", shade:60, width:0.1}}
end tell
end tell
(*end tell*)
return Ad_Box
end Make_Box
on get_CurrentPage()
tell application "QuarkXPress"
tell document 1
return page number of current page
end tell
end tell
end get_CurrentPageHi,
I think with this, you can already make good progress in your work.
Good luck!
global mydocument
tell application "Adobe InDesign CS5.5"
set mydocument to active document
tell mydocument
set myParaStyle to paragraph style "DUMMY TEXTS"
tell page 1
set TheBounds to {0, 0, 20, 50}
set Ad_Box to make text frame
tell Ad_Box
set geometric bounds to TheBounds
set vertical justification of text frame preferences to center align
set contents to "This is the contents"
end tell
set myStory to parent story of Ad_Box
set applied paragraph style of every paragraph of myStory to myParaStyle
end tell
end tell
end tell
Your two handlers then look like this:
on Make_Box(ThePage, TheBounds, this_angle)
local ThePage, TheBounds, this_angle
tell application "Adobe InDesign CS5.5"
tell page ThePage of mydocument
set Ad_Box to make text frame
tell Ad_Box
set geometric bounds to TheBounds
set vertical justification of text frame preferences to center align
end tell
end tell
end tell
return Ad_Box
end Make_Box
on get_CurrentPage(CurrentTextFrame)
tell application "Adobe InDesign CS5.5"
tell mydocument
return name of parent page of parent page of CurrentTextFrame
end tell
end tell
end get_CurrentPage
Shorter version:
on get_CurrentPage(CurrentTextFrame)
tell mydocument of application "Adobe InDesign CS5.5"
return name of parent page of parent page of CurrentTextFrame
end tell
end get_CurrentPage
Ce message a été modifié par: OlivierBerquin -
Problem with script – NEED HELP
HELP!!! why isn't the script working?
on adding folder items to thefolder after receiving theAddedItems
repeat with eachitem in theAddedItems
set theSender to "me<[email protected]>"
set recipCommon to "Files"
set recipAddress to (choose from list {"User 1", "User 2", "User 3"} with prompt "Select a recipient :") as text
if result is "User 1" then
set recipAddress to {"User 1 <[email protected]>"}
else if result is "User 2" then
set recipAddress to {"User 2 <[email protected]>"}
else if result is "User 3" then
set recipAddress to {"User 3 <[email protected]>", "[email protected]>"}
end if
set msgText to " type body copy here "
tell application "Mail"
set newmessage to make new outgoing message with properties {content:msgText & return}
tell newmessage
set sender to theSender
tell application "Finder" to set theSubject to name of eachitem
set subject to theSubject
repeat with eachRecipient in recipAddress
make new to recipient at end of to recipients with properties {name:recipCommon, address:eachrecipAddress}
end repeat
end tell
send newmessage
end tell
end repeat
end adding folder items toHELP......
!!!Everything works in the below script except it doesn't send the email?!!!
on adding folder items to thefolder after receiving theAddedItems
repeat with eachitem in theAddedItems
set theSender to "me<[email protected]>"
set recipCommon to "Files"
set recipAddress to (choose from list {"User 1", "User 2", "User 3"} with prompt "Select a recipient :") as text
if result is "User 1" then
set recipAddress to {"User 1 <[email protected]>"}
else if result is "User 2" then
set recipAddress to {"User 2 <[email protected]>"}
else if result is "User 3" then
set recipAddress to {"User 3 <[email protected]>", "[email protected]>"}
end if
set msgText to " type body copy here "
tell application "Mail"
set newmessage to make new outgoing message with properties {content:msgText & return}
tell newmessage
set visible to true
set sender to theSender
tell application "Finder" to set theSubject to name of eachitem
set subject to theSubject
repeat with eachRecipient in recipAddress
make new to recipient at end of to recipients with properties {name:recipCommon, address:eachRecipient}
end repeat
repeat with eachRecipient in recipAddress
make new to recipient at end of to recipient with properties {name:recipCommon, address:recipAddress}
set eachRecipient to contents of eachRecipient
end repeat
end tell -
Select layer/object will not move in PS, but will move another layer. Need help
I appreciate the help ahead. I cannot figure this out with my Photoshop CC.
Basically when I select a layer on the right, and then go to move the object in that layer, it moves a different layer behind it.
In the screen shot below on the left I am selecting the artwork layer on the right, which is the flip flops on the shirt.
From here I can use the arrows to move the graphic. However, as soon as I use the mouse to select the flip flop graphic and go to move it, the layer selection on the right jumps to the shading and moves a background layer.
What am I doing wrong? Super frustrating!
Running Win 7 x64 8 gig ram, i7, 2 gb Nvidia card.
Thanks!
JasonYou probably have Auto Select Layer on. (Options bar)
-
hi
in scripts in one window i have to fill with first day of current system year and last day of system current year . how to get it ?
thanks& regards
lakshmiHi,
Try this function module 'FIRST_AND_LAST_DAY_IN_YEAR_GET'
Thanks
Vasudha -
Creating Basic Calculator Script - Needs help
I'd like to create a basic calculator script that makes doing calculations a bit easier from the command line. Normally i do:
echo "32*24" | bc
So I built a bash script that I can just type "calc 32*24":
bc << EOF
scale=4
$@
quit
EOF
And it works ok until i try to use parenthesis:
calc (1+49)/5
bash: syntax error near unexpected token `1+49'
if I use parenthesis, directly in the bc command it does ok:
bc
bc 1.06...
(1+49)/5
10
I've tried putting $@ in quotes but not luck. Looks like bash isn't transferring the parenthesis. How can I get the bash script to pass theparenthesis?Dusty wrote:This is why I always have at least one terminal in an IPython session.
+1!
I normally use a standard python instance in the same way but have just installed ipython and am having a look at it now. Looks cool! -
New to shell script need help for script
Hi,
I have following shell script which takes database name from file sql.config. this file has names of all staging database. I want to modify this script to run below analyze index commands if database is staging and if its production database then i want to run different set of commands say analyze user schemas. How can i implement this in below script (something like if then else)?
connstr=`grep "gemsit_staging" /cronacle/tools/informatica/sql.config`
sqlplus -S<<EOF1
$connstr
whenever sqlerror exit failure;
ANALYZE TABLE GEMSIT_STAGING.AR_TRANS_DETAIL_STG COMPUTE STATISTICS;
ANALYZE TABLE GEMSIT_STAGING.GLOBAL_SET_S COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_DEL_TRANS_DETAIL_STG_PK COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_DEL_TRANS_DETAIL_STG_01 COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG_PK COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG01_IX COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG02_IX COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG03_IX COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG04_IX COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG05_IX COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG06_IX COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.AR_TRANS_DETAIL_STG07_IX COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.GLOBAL_SET_S_PK COMPUTE STATISTICS;
ANALYZE INDEX GEMSIT_STAGING.GLOBAL_SET_S_PK1 COMPUTE STATISTICS;
EOF1
thanksif test $? -ne 0 ; then
echo 'Processing Error' >> $Log_Dir/$Log_File
exit 1
else
echo 'Processing Completed' >> $Log_Dir/$Log_File
rm -f $Script_Dir/$Flag_File
exit 0
ficreate two sql files one form test and for prod say test.sql and prod.sql with relevant sql statements
this is a sample if else construct, you nned to get the env using "host"/"hostname" cmd on linux and assign this to a variable say envname
if envname $? -ne 'PR' ; then
echo 'Processing Test SQL' >> $Log_Dir/$Log_File
<call the test sql here>
exit 1
else
echo 'Processing Prod SQL' >> $Log_Dir/$Log_File
<call the Prod sql here>
fi -
text<tab>{findWhat:”<U+0394>”}<tab>{appliedCharacterStyle:”Symbol”}<tab>{includeFootnotes: true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}
In this case, I want to swap the Greek letter Delta, which is its codepoint U + 0394, for a specific character style (the style is called Symbol).
The question is: is written right?
Where should I put it? Because I'm just adding this line in an existing code ...
Thanks anyway to everyone! ^^Hi,
You could use "grep" mode instead of "text". I mean:
grep<tab>{findWhat:"\x{394}"}<tab>{appliedCharacterStyle:"Symbol"}<tab>{includeFootnotes:t rue, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}
findWhat:"\x{394}" means to find a unicode with specified number (the number you can see in InDesign Info Panel).
This should be placed as a one of lines inside "FindChangeList.txt" file before "FindChangeByList.jsx" run.
Jarek -
Need help making a simple script for my webcam
Hey everyone, fairly new to applescript programming. I just bought a usb camera for my macbook because I use it for video conferencing/playing around, and it is better quality than the built in isight. However, in order to use this camera I need to use drivers from a program called camTwist. This being said camTwist needs to be opened first and the usb camera must be selected from camTwist Step 1 list in order for any other application to use the camera. I just want to make a simple program that would open camTwist first, then select "webcam" from the list (double click it like I always have to in order to select it) in order to activate the driver, and then open photo booth which would then be using the camTwist driver in order to take pictures.
I made a crude program but it does not automatically select "webcam" from the Step 1 list in camTwist:
tell application "CamTwist" to activate
delay 10
tell application "Photo Booth" to activate
that’s basically it. I set the delay to 10 seconds so that when camTwists boots up first I can manually select my webcam. HOWEVER, I would like to make a script that would boot up CamTwist first, select my webcam from the list automatically, and then open Photo Booth with the CamTwist webcam driver already selected.
Don't know much about applescript so any help to make a working script to solve my problem would be greatly appreciated! Thanks!Solved my problem but now I need help with something else! First I used CamTwist user options to create user defined hot keys with the specific purpose to load the webcam. I chose Command+B. I tested it out in CamTwist and it worked. The program follows a logical order from there. First it loads CamTwist, then after a short delay it presses the hot keys in order to load the webcam from the video source list, then another short delay and Photo Booth is opened with the driver loaded from camTwist. Everything works Perfect! Here's the code:
tell application "System Events"
tell application "CamTwist" to activate
delay 0.5
--Press command+b which is a user defined hot key to load webcam
key code 11 using command down
end tell
delay 0.5
tell application "Photo Booth" to activate
My Next question is, would it be possible with this same script to have both applications quit together. For example I always quit Photo Booth first, so when I quit photo booth is there a way to make CamTwist also quit and keep everything within the same script? Please let me know. This forum has been very helpful and lead me to a solution to my problem! Hoping I can solve this next problem as well! Thanks everyone.
Maybe you are looking for
-
After IOS 8 upgrade IPad 2 don't start
Hi, After IOS 8 upgrade my IPad 2 don't start and just show this screen and nothing works.
-
Itunes 6.0.1 tries to go to music store on startup
How do I keep itunes from trying to go to the music store when I plug my iphone into the computer? There must be settings somewhere but I sure can't fine them. I only use itunes to load an occasional photo onto my phone. I don't have any interest in
-
"Always Open In..." View Options for Root Level of a Disk Image File
I ran into a problem/bug tonight that I can't find listed anywhere and was wondering if anyone else has encountered it. I am using Snow Leopard (now 10.6.1), upgraded from the last revision of Leopard. I create DVD-R sized disk images with Disk Utili
-
Here is the error I am getting everytime I switch to "Output" in Bridge CS6: TypeError: undefined is not an object: onResizeO buildUIStack(true, "Cabinet") buildUIStack(JTabbedPalette:[object TabbedP alette II. true, 'Cabinet') switch T o([T abbed Pa
-
Hello, i have a problem with my ID Apple. i chenaged my principal mail's account and now i can't enter in different services. When i try to log in appear a message as "you have to verify your mail - account", when i follow the links to verify, the pa